我正在尝试使用 Python 和 wxWidgets 构建一个简约的文本文件编辑器。这是我第一次构建图形用户界面。我想构建一个简单的窗口,在启动时将打开并显示文件上的内容1.txt。单击“下一步”按钮时,编辑器应显示2.txt文件的内容。我制作了以下程序,它成功地显示了我想要的窗口和小部件,但无法打开文本文件并正确显示它们。有问题的行已经被注释掉了,我用 aprint()来显示打开文件的内容。不仅print()显示一个空字符串,而且似乎没有考虑到点击按钮的事件。这是我的代码:#!/usr/bin/env python3import wximport wx.lib.editor as editorclass Editor(wx.App): filecounter = 1 def __init__(self): wx.App.__init__(self, redirect=False) def OnInit(self): frame = wx.Frame( None, -1, "blabla", size=(200, 100), style=wx.DEFAULT_FRAME_STYLE, name="wsfacile editor", ) frame.Show(True) frame.Bind(wx.EVT_CLOSE, self.OnCloseFrame) win = self.EditWindow(frame) if win: frame.SetSize((800, 600)) win.SetFocus() self.window = win frect = frame.GetRect() else: frame.Destroy() return True self.SetTopWindow(frame) self.frame = frame return True def OnExitApp(self, evt): self.frame.Close(True) def OnCloseFrame(self, evt): evt.Skip() def GetNextFile(self): self.filecounter += 1 # self.ed.SetText(self.GetFileText(str(self.filecounter) + ".txt")) print(self.GetFileText(str(self.filecounter) + ".txt")) def GetFileText(self, filename): with open(filename, "r") as myfile: result = myfile.readlines() myfile.close() return result def EditWindow(self, frame): win = wx.Panel(frame, -1) self.ed = editor.Editor(win, -1, style=wx.SUNKEN_BORDER) next_button = wx.Button(win, 0, "Next") box = wx.BoxSizer(wx.VERTICAL) box.Add(self.ed, 1, wx.ALL | wx.GROW, 1) box.Add(next_button, 0, wx.ALIGN_CENTER, 0) self.Bind(wx.EVT_BUTTON, self.GetNextFile()) win.SetSizer(box) win.SetAutoLayout(True) # self.ed.SetText(self.GetFileText(str(self.filecounter) + ".txt")) return win
1 回答
GCT1015
TA贡献1827条经验 获得超4个赞
线
self.Bind(wx.EVT_BUTTON, self.GetNextFile())
是错误的,它调用函数而不是将其设置为处理程序。您应该删除()
.
添加回答
举报
0/150
提交
取消