为了账号安全,请及时绑定邮箱和手机立即绑定

尝试做一个文本文件查看器

尝试做一个文本文件查看器

米脂 2022-07-26 15:43:00
我正在尝试使用 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())

是错误的,它调用函数而不是将其设置为处理程序。您应该删除().


查看完整回答
反对 回复 2022-07-26
  • 1 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信