私はPythonとwxpythonの初心者です。私はコンボボックスのユーザー入力に基づいてチェックボックスを作成する必要があるコードを記述しようとしました。私はそれをすることができます。しかし、私が選択を変更するとき、古いチェックボックスはまだそこにあり、私はそれらを破壊する方法やリフレッシュを見つけることができません。どんな助けも高く評価されます。wxpythonで動的に作成されたチェックボックスを削除する
import wx
class Form1(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
wx.EVT_COMBOBOX(self, 30, self.EvtComboBox)
self.lblhear = wx.StaticText(self,-1,"APPLICATION",wx.Point(30, 295))
self.lblhear3 = wx.StaticText(self, -1, "TASKS TO BE DONE", wx.Point(30, 370))
self.sampleList = ['ABC', 'PQR']
self.edithear=wx.ComboBox(self, 30, "",
wx.Point(110, 290), wx.Size(95, -1),
self.sampleList, wx.CB_DROPDOWN)
self.Bind(wx.EVT_COMBOBOX, self.AppSelect, self.edithear)
def AppSelect(self, event):
if event.GetString() == "ABC":
self.Application = 'ABC'
self.cb_list = []
act_list = ['Task1','Task2']
elif event.GetString() == "PQR":
self.Application = 'PQR'
self.cb_list = []
act_list = ['Task3','Task4']
pos_y = 380
id_cb = 100
for i in act_list:
pos_y += 20
id_cb += 20
self.cb = wx.CheckBox(self, id_cb, label=i, pos=(50, pos_y))
self.cb.SetValue(False)
self.cb_list.append(self.cb)
def EvtComboBox(self, event):
if event.GetId() == 30:
self.Application = self.event.GetString()
app = wx.PySimpleApp()
frame = wx.Frame(None, size=(1200,800))
Form1(frame)
frame.Show(1)
app.MainLoop()
あなたのコードは、あなたがチェックボックスを作成する場所に届かないと思われます。プログラムの出力を見て、エラーを1つずつ削除してみてください。それから私たちは進めることができます。また、コードの最小限の例を投稿すれば、より良い回答を得ることができます。 –
こんにちはペトル、コードを見ていただきありがとうございます。しかし、私はあなたが「CBを作成する場所に到達しない」ことを意味するものは、わかりません。私はCBを作成することはできますが、古いものは削除または破棄することができません。私はあなたが提案したようにスクリプトを編集しました。 – Surjith
[mcve]を提供できますか?チェックボックスの削除後にフレームを再描画するのを忘れるかもしれない –