wxPython对话框在ShowModal之后冻结
这里的代码直接,值得千言万语的解释wxPython对话框在ShowModal之后冻结,python,python-2.7,wxpython,Python,Python 2.7,Wxpython,这里的代码直接,值得千言万语的解释 #!/usr/bin/env python2 import wx class TestDialog(wx.Dialog): def __init__self(*arg, **args): wx.Dialog.__init__(self, parent, id, title, size=(350,300)) sizer = self.CreateTextSizer('My Buttons') # bad
#!/usr/bin/env python2
import wx
class TestDialog(wx.Dialog):
def __init__self(*arg, **args):
wx.Dialog.__init__(self, parent, id, title, size=(350,300))
sizer = self.CreateTextSizer('My Buttons')
# bad()
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(wx.Button(self, -1, 'Button'), 0, wx.ALL, 5)
sizer.Add(wx.Button(self, -1, 'Button'), 0, wx.ALL, 5)
sizer.Add(wx.Button(self, -1, 'Button'), 0, wx.ALL, 5)
sizer.Add(wx.Button(self, -1, 'Button'), 0, wx.ALL|wx.ALIGN_CENTER, 5)
sizer.Add(wx.Button(self, -1, 'Button'), 0, wx.ALL|wx.EXPAND, 5)
sizer.Fit(self)
self.SetSizer(sizer)
def InitUI(self):
pnl = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
btn = wx.Button(pnl, label='Ok')
vbox.Add(btn, 1, flag=wx.LEFT)
pnl.SetSizer(vbox)
def OnClose(self):
self.Destroy()
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(550,500))
panel = wx.Panel(self, -1)
wx.Button(panel, 1, 'Show Custom Dialog', (100,100))
self.Bind (wx.EVT_BUTTON, self.OnShowCustomDialog)
def OnShowCustomDialog(self, event):
dia = TestDialog(self, -1, 'buttons')
dia.ShowModal()
# dia.Destroy()
if __name__ == "__main__":
try:
app = wx.App()
frame = MyFrame(None, wx.ID_ANY, 'dialog')
frame.Show()
# import wx.lib.inspection
# wx.lib.inspection.InspectionTool().Show()
app.MainLoop()
except:
import sys
import traceback
xc = traceback.format_exception(*sys.exc_info())
wx.MessageBox(''.join(xc))
显示主窗口,但在显示对话框后似乎没有执行任何操作。即使取消注释bad()
调用似乎也不会显示任何内容。更改此项:
class TestDialog(wx.Dialog):
def __init__self(*arg, **args):
为此:
class TestDialog(wx.Dialog):
def __init__(self, parent, id, title)
我想那是你的错别字。将其更改为如上所示,您将获得所需的结果。创建实例时,类的
\uuuu init\uuu
方法将自动运行。除非显式调用,\uuuu init\uu self
方法将永远不会运行 你怎么发现的?这是我一天的结束,所以盯着它看对我没有帮助:)测试代码,直到我发现错误。当一个问题包含将要运行的代码时,这总是很好的。一双不同的眼睛可能会帮上大忙。你也许能帮我解决我的问题