wxpython phoenix说Frame init args是错误的

时间:2016-10-16 17:47:08

标签: python user-interface wxpython python-3.5

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

  

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

     

参数与任何重载调用都不匹配:重载1:太多

     

参数重载2:参数1具有意外类型“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()

1 个答案:

答案 0 :(得分:2)

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()