作为wxpython的新手,我正在尝试为虚构程序编写登录脚本。启动时,按钮会询问您是要创建新帐户还是注册新帐户。当单击任何一个时,我希望页面上的所有小部件都消失,为其他小部件留下一个空白框架。但是我不知道如何.Hide()特定的小部件 - 我现有的小部件不被识别为变量。这是我的相关代码:
class Welcome(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, "ImageViewer", size=(500,350))
panel = wx.Panel(self)
text = wx.StaticText(panel, -1, "Welcome to ImageViewer. Do you have an account?", (50,10))
font = wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
text.SetFont(font)
yesbutton = wx.Button(panel, label="Yes, I wish to log in", pos=(50,150), size=(150,60))
self.Bind(wx.EVT_BUTTON, self.loginwindow, yesbutton)
nobutton = wx.Button(panel, label="No, I wish to register", pos=(270,150), size=(150,60))
self.Bind(wx.EVT_BUTTON, self.registerwindow, nobutton)
def loginwindow(self, event):
self.Hide(self.text) #Error occurs here
AttributeError:'Welcome'对象没有属性'text'
我不确定是否有更好的方法(如果有请让我知道)但是现在我不确定为什么我无法访问这些变量。
答案 0 :(得分:0)
text
并未成为Welcome
类的属性,因此当您尝试在loginwindow
函数中调用它时,它超出了范围。
当您在init
方法中声明它时,请将其设为self.text
编辑:此代码有效。
class Welcome(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, None, id, "ImageViewer", size=(500,350))
panel = wx.Panel(self)
self.text = wx.StaticText(panel, -1, "Welcome to ImageViewer. Do you have an account?", (50,10))
font = wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
self.text.SetFont(font)
yesbutton = wx.Button(panel, label="Yes, I wish to log in", pos=(50,150), size=(150,60))
self.Bind(wx.EVT_BUTTON, self.loginwindow, yesbutton)
def loginwindow(self, event):
self.text.Hide() #Error occurs here