wxpython phoenix 说 Frame init args 是错误的

wxpython phoenix says that Frame init args are wrong

我正在尝试在 wx python 3.0.4 中使用菜单创建简单的 window。 实际上我得到一个错误:

wx.Frame.init(self, ID_ANY, "Title", DefaultPosition, (350,200), DEFAULT_FRAME_STYLE, FrameNameStr) TypeError: Frame():

arguments did not match any overloaded call: overload 1: too many

arguments overload 2: argument 1 has unexpected type 'StandardID'

甚至这段代码也来自文档。有人可以告诉我我做错了什么吗?

import wx
from wx import *

class MainWindow(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, ID_ANY, "Title", DefaultPosition, (350,200), DEFAULT_FRAME_STYLE, FrameNameStr)
        self.Bind(wx.EVT_CLOSE, self.OnClose)

        menuBar = wx.MenuBar()
        menu = wx.Menu()
        m_exit = menu.Append(wx.ID_EXIT, "E&xit", "Close window and exit program.")
        self.Bind(wx.EVT_MENU, self.OnClose, m_exit)
        menuBar.Append(menu, "&File")
        menu = wx.Menu()
        m_about = menu.Append(wx.ID_ABOUT, "&About", "Information about this program")
        self.Bind(wx.EVT_MENU, self.OnAbout, m_about)
        menuBar.Append(menu, "&Help")
        self.SetMenuBar(menuBar)

        self.main_panel = MainPanel(self)

    def OnClose(self, e):
        self.Close()

    def OnAbout(self, event):
        dlg = AboutBox(self)
        dlg.ShowModal()
        dlg.Destroy()


class MainPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

class AboutBox(wx.MessageDialog):
    def __init__(self, parent):
        wx.MessageDialog.__init__(parent, "About", "About", wx.OK | wx.ICON_INFORMATION, pos=DefaultPosition)
        self.CentreOnParent(wx.BOTH)
        self.SetFocus()


if __name__ == "__main__":
    app = wx.App(False)
    frame = MainWindow()
    frame.Show()
    app.MainLoop()
Frame(parent, id=ID_ANY, title="", pos=DefaultPosition,
  size=DefaultSize, style=DEFAULT_FRAME_STYLE, name=FrameNameStr)

您错过了父参数。

工作代码

import wx

class MainWindow(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(
            self, None, wx.ID_ANY, "Title", wx.DefaultPosition, (350,200),
            wx.DEFAULT_FRAME_STYLE, wx.FrameNameStr)
        self.Bind(wx.EVT_CLOSE, self.OnClose)

        menuBar = wx.MenuBar()
        menu = wx.Menu()
        m_exit = menu.Append(
            wx.ID_EXIT, "E&xit", "Close window and exit program.")
        self.Bind(wx.EVT_MENU, self.OnClose, m_exit)
        menuBar.Append(menu, "&File")
        menu = wx.Menu()
        m_about = menu.Append(
            wx.ID_ABOUT, "&About", "Information about this program")
        self.Bind(wx.EVT_MENU, self.OnAbout, m_about)
        menuBar.Append(menu, "&Help")
        self.SetMenuBar(menuBar)

        self.main_panel = MainPanel(self)

    def OnClose(self, e):
        self.Destroy()

    def OnAbout(self, event):
        dlg = AboutBox(self)
        dlg.ShowModal()
        dlg.Destroy()


class MainPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

class AboutBox(wx.MessageDialog):
    def __init__(self, parent):
        wx.MessageDialog.__init__(
            self, parent, "About", "About", wx.OK | wx.ICON_INFORMATION,
            pos=wx.DefaultPosition)
        self.CentreOnParent(wx.BOTH)


if __name__ == "__main__":
    app = wx.App(False)
    frame = MainWindow()
    frame.Show()
    app.MainLoop()