저는 파이썬과 wxpython의 초심자입니다. 나는 Combobox의 사용자 입력을 기반으로 Checkbox를 만들어야하는 코드를 작성하려고했습니다. 나는 그것을 할 수있다. 그러나 선택 항목을 변경할 때 이전 체크 박스가 그대로 남아 있으며이를 삭제하거나 새로 고치는 방법을 찾을 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.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()
코드가 CheckBox를 만드는 위치에 도달하지 못하는 것 같습니다. 프로그램 출력을보고 오류를 하나씩 제거하십시오. 그럼 우리가 진행할 수 있습니다. 또한 최소한의 코드 예제를 게시하면 더 좋은 답을 얻을 수 있습니다. –
안녕하세요, Petr, 코드를 찾아 주셔서 감사합니다. 그러나 나는 당신이 'CB를 만드는 장소에 도달하지 않음'을 의미한다는 것을 확신하지 못합니다. 나는 CB를 만들 수 있지만, 오래된 것을 삭제하거나 파괴 할 수는 없다. 내가 제안한대로 스크립트를 편집했습니다. – Surjith
[mcve]를 제공 할 수 있습니까? 확인란을 삭제 한 후 프레임을 다시 그리는 것을 잊어 버릴 수도 있습니다. –