我正在尝试学习构建基本的 GUI,我从一个简单的文本编辑器开始。到目前为止,我已经能够很好地解决问题,但是我遇到了一个奇怪的问题。当我正在构建它时,我可以单击窗口的红色“X”退出按钮(右上角)并更改一些内容并重新启动它。但是在定义了一些功能之后它似乎已经停止工作,编辑器启动正常并且可以使用我迄今为止使用的菜单片段,但它并没有让我“X”出来。我必须重新启动内核才能关闭它,这很烦人。我试着浏览它,但我没有改变任何我知道的应该导致这种情况的东西。所以我想我会把它带给专家并获得意见/经验。
#!/user/bin/env python
import os
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(500, 300))
self.control=wx.TextCtrl(self, style=wx.TE_MULTILINE)
self.CreateStatusBar()
filemenu=wx.Menu()
About_Menu=filemenu.Append(wx.ID_ABOUT, '&About','Info about')
Exit_Menu=filemenu.Append(wx.ID_EXIT,'E&xit','Term')
Open_Menu=filemenu.Append(wx.ID_OPEN,'&Open','Open File')
menuBar=wx.MenuBar()
menuBar.Append(filemenu,'&File')
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnAbout, About_Menu)
self.Bind(wx.EVT_MENU, self.OnExit, Exit_Menu)
self.Bind(wx.EVT_MENU, self.OnOpen, Open_Menu)
self.Show(True)
def OnAbout(self,e):
dlg=wx.MessageDialog( self, 'The Editor', 'About the Editor', wx.OK)
dlg.ShowModal()
dlg.Destroy()
def OnExit(self,e):
dlg=wx.MessageDialog( self, 'Test Exit','Exit', wx.OK)
dlg.ShowModal()
dlg.Destroy()
def OnOpen(self,e):
self.dirname=''
dlg=wx.FileDialog(self, 'Choose a file', self.dirname, '','*.*', wx.OPEN)
if dlg.ShowModal()==wx.ID_OK:
self.filename=dlg.GetFilename()
self.dirname=dlg.GetDirectory()
f=open(os.path.join(self.dirname, self.filename), 'r')
self.control.SetValue(f.read())
f.close()
dlg.Destroy()
app=wx.App(False)
frame=MainWindow(None, 'Sample')
app.MainLoop