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