2017-07-31 40 views
0
def home(self): 
    btn = QtGui.QPushButton("Log in", self) 
    self.show() 


    if btn.clicked: 
     btn.clicked.connect(btn.deleteLater) 
     self.Page() 
    else: 
     pass 

def Page(self): 
     btn2 = QtGui.QPushButton("Exit", self) 
     self.show() 

很抱歉,如果缩进是不正确的在这里,但它是在我的Python文件: 所以BTN并删除被按下时,但页面功能ISN没有正确运行,因为btn2没有出现。如何从一个类中调用一个函数PyQt4中

这只是粘贴的相关代码片段。

TIA帮助了解为什么Page函数没有运行。我正在使用python 2,7和pyqt4

+0

您可以显示班级代码。 – eyllanesc

+0

什么是'btn.clicked'? – eyllanesc

回答

0

它看起来像btn变量是本地内部home方法。这意味着它只能在这个方法中看到(除非它是在更高级别的范围外定义的)。

如果你想在一个类的多个方法中共享一个变量,你应该把它作为一个对象属性存储 - 这就是为什么你需要一些OOP。例如(假设您的班级定义中有其余的构成):

class YourApp(object): 
    def __init__(self): 
     # All the preparations should go here. 
     # If self.btn is created later dynamically, 
     # it's still recommended to declare it here 
     # and assign `None` to it 
     self.btn = QtGui.QPushButton("Log in", self) 

    def home(self): 
     # Do stuff with self.btn 
     self.btn.spam() 
     pass 

    def page(self): 
     # Do other stuff with self.btn 
     self.btn.eggs() 
相关问题