【发布时间】:2011-07-23 17:03:43
【问题描述】:
有没有办法从一个按钮重新初始化一个特定的面板?我有一个应用程序的一部分,它在操作系统中查找特定文件,然后创建一些复选框和 textctrls,然后将它们动态添加到 sizer:
for db in numDB:
if xIndex >= 12:
pass
xIndex += 1
else:
check = wx.CheckBox(self, -1, db)
sizer.Add(check, pos=(xIndex,0), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=10)
label = wx.StaticText(panel, label="")
sizer.Add(label, pos=(xIndex,1), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=10)
name = wx.TextCtrl(panel)
#Set Temp Name
if db.endswith('.db'):
name.Value = db[:-3]
sizer.Add(name, pos=(xIndex,2), span=(1,3),flag=wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, border=10)
xIndex +=1
我有一个刷新按钮,以防用户添加或删除一个新数据库。至少对我来说,最简单的概念是尝试找到一种方法来重新运行 init。
我正在尝试通过以下方式引用 init:
def onRefreshClick(self, event):
self.__init__
该 def 发生在 Class 本身中,但它似乎没有做任何事情。总的来说,我对整个 wxPython 和 Python 都非常陌生,所以这可能是一些我无法弄清楚的简单事情。
已编辑以尝试合并 super():
class LaunchPanel(wx.Panel):
"""
Launch Tab for finding and launching .db files
"""
#----------------------------------------------------------------------
def __init__(self, parent):
""""""
wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY)
super (LaunchPanel)
self.initialize()
def initialize(self):
panel = self
sizer = wx.GridBagSizer(11, 3)
<snip...>
这导致我的面板为空。当我点击刷新时,它会(我认为)将我所有的元素添加到面板的左上角......?我确定这很容易,无论我做错了什么......?
【问题讨论】: