wxpython 中单个小部件的 .Hide() 问题
Issue with .Hide() on individual widgets in wxpython
作为 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' object has no attribute 'text'
我不确定是否有更好的方法(如果有请告诉我)但现在我只是不确定为什么我不能访问这些变量。
text
不是 Welcome
class 的属性,因此当您尝试在 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
作为 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' object has no attribute 'text'
我不确定是否有更好的方法(如果有请告诉我)但现在我只是不确定为什么我不能访问这些变量。
text
不是 Welcome
class 的属性,因此当您尝试在 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