wxpython

时间:2015-07-19 01:53:22

标签: python 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'对象没有属性'text'

我不确定是否有更好的方法(如果有请让我知道)但是现在我不确定为什么我无法访问这些变量。

1 个答案:

答案 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