【问题标题】:How can I create a wx.Frame without a parent?如何在没有父级的情况下创建 wx.Frame?
【发布时间】:2016-02-06 00:08:07
【问题描述】:
当我尝试使用wx.Frame(False) 创建一个新框架时,我收到了这个错误,通过调用堆栈向下传递:
TypeError: in method 'new_Frame', expected argument 1 of type 'wxWindow *'
我知道参数应该是父窗口,但至少在 C++ 中,如果您不希望窗口有父窗口,您可以传递一个空指针。
如何在没有父级的情况下创建 wx.Frame?
【问题讨论】:
标签:
python
window
wxpython
【解决方案1】:
你可以通过None。如本例所示。
#!/usr/bin/python
# simple.py
import wx
app = wx.App()
frame = wx.Frame(None, -1, 'simple.py')
frame.Show()
app.MainLoop()
【解决方案2】:
如前所述,您可以传递None。这是正常的方式,也是您在大多数示例中看到的方式。我更喜欢展示一个框架类的例子:
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, title='Test')
self.Show()
if __name__ == '__main__':
app = wx.App(False)
frame = MyFrame()
app.MainLoop()
在使用 wxPython 定义子类时,您也可以使用 Python 的 super:
import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
super(MyFrame, self).__init__(*args, **kwargs)
self.Show()
if __name__ == '__main__':
app = wx.App(False)
frame = MyFrame(parent=None, title='Test')
app.MainLoop()