私はプログラミングとpythonとwxpythonにかなり慣れていません。私はこのコードを文字通り HOURS で調べ、オンラインでどこでも答えを見つけようとしました。メニュー項目をクリックした後、新しいウィンドウを表示するのに問題があります。これまでの私のコードは次のとおりです...
import wx
class MainWindow(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'Python Test App',size=(600,400))
panel=wx.Panel(self)
wx.Frame.CenterOnScreen(self)
##wx.Frame.Maximize(self)
status=self.CreateStatusBar()
menubar=wx.MenuBar()
file_menu=wx.Menu()
edit_menu=wx.Menu()
ID_FILE_NEW = 1
ID_FILE_OPEN = 2
ID_EDIT_UNDO = 3
ID_EDIT_REDO = 4
file_menu.Append(ID_FILE_NEW,"New Window","This is a new window")
file_menu.Append(ID_FILE_OPEN,"Open...","This will open a new window")
edit_menu.Append(ID_EDIT_UNDO,"Undo","This will undo your last action")
edit_menu.Append(ID_EDIT_REDO,"Redo","This will redo your last undo")
menubar.Append(file_menu,"File")
menubar.Append(edit_menu,"Edit")
self.SetMenuBar(menubar)
self.Bind(wx.EVT_MENU, NewWindow.new_frame, None, 1)
class NewWindow(wx.Frame):
def __init__(self,MainWindow,id):
wx.Frame.__init__(self, None, id, 'New Window', size=(600,400))
wx.Frame.CenterOnScreen(self)
self.Show(False)
def new_frame(self, event):
NewWindow.Show(True)
if __name__=='__main__':
app=wx.PySimpleApp()
frame=MainWindow(parent=None,id=-1)
frame.Show()
app.MainLoop()
このコードを実行しようとすると、メニュー項目の [新しいウィンドウ] をクリックすると、このエラー メッセージが表示されます。
TypeError: unbound method new_frame() must be called with NewWindow instance as first argument (got CommandEvent instance instead)
繰り返しますが、私はプログラミングにかなり慣れていません。どんな助けも大歓迎です。また、私のコードが「最もきれいな」コードではないことも知っています。前もって感謝します!