我正在嘗試使用 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
提交
取消