我正在创建一个程序来编辑一个.txt文件。在
我在一个文件夹中有两个文件:
gui.py & edit_text.py
下面是的代码图形用户界面.py
# -*- coding: utf-8 -*-
import wx
import wx.xrc
class Main ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Editor MAVB", pos = wx.DefaultPosition, size = wx.Size( 250,180 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.Size( 250,180 ), wx.Size( 250,180 ) )
layout_sizer = wx.BoxSizer( wx.VERTICAL )
self.text1 = wx.StaticText( self, wx.ID_ANY, u"Escolha o arquivo que será editado:", wx.DefaultPosition, wx.DefaultSize, 0 )
self.text1.Wrap( -1 )
layout_sizer.Add( self.text1, 1, wx.ALL|wx.EXPAND, 5 )
self.filePicker = wx.FilePickerCtrl( self, wx.ID_ANY, wx.EmptyString, u"Selecione um arquivo", u"*.txt", wx.DefaultPosition, wx.Size( 210,-1 ), wx.FLP_DEFAULT_STYLE|wx.FLP_FILE_MUST_EXIST|wx.FLP_SMALL )
layout_sizer.Add( self.filePicker, 0, wx.ALL|wx.EXPAND, 5 )
self.null_text = wx.StaticText( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
self.null_text.Wrap( -1 )
layout_sizer.Add( self.null_text, 0, wx.ALL, 5 )
self.edit_button = wx.Button( self, wx.ID_ANY, u"Alterar arquivo", wx.DefaultPosition, wx.DefaultSize, 0 )
layout_sizer.Add( self.edit_button, 0, wx.ALL, 5 )
self.status_text = wx.StaticText( self, wx.ID_ANY, u"Aguardando arquivo...", wx.DefaultPosition, wx.DefaultSize, 0 )
self.status_text.Wrap( -1 )
layout_sizer.Add( self.status_text, 0, wx.ALL|wx.EXPAND, 5 )
self.SetSizer( layout_sizer )
self.Layout()
self.Centre( wx.BOTH )
# Connect Events
self.edit_button.Bind( wx.EVT_BUTTON, self.editar_txt )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def editar_txt( self, event ):
event.Skip()
下面是编辑的代码_文本.py
^{pr2}$当我进入程序文件夹并运行编辑_文本.py,我得到了以下错误:
Error in line
infile = self.filePicker.GetTextCtrlValue()
NameError: name 'self' is not defined
infile = self.filePicker.GetTextCtrlValue()
问题:
Why isn't this working?
How can I make it work?
为什么没用?因为下面这一行:
在任何函数之外,并且在类定义中。它试图执行这行,因为类被定义以在类上创建一个}。在
infile
属性,而且此时没有定义self
,因此它抱怨没有定义{你怎么能做到呢?大概,您希望该行及其后一行位于您的
__init__()
方法中。相应地缩进它们。在您正试图访问从继承的实例属性主图形用户界面作为类属性。一般来说,您尝试静态访问非静态属性。在
如果将infile和outfile_path定义为MyFrame的实例属性,则可以使用访问它们自身财产。在
(请注意,这样您需要更改对引用该方法的editar_txt方法的引用,因为不再需要该参数。)
在编辑中修改的MyFrame类下面_文本.py:
相关问题 更多 >
编程相关推荐