如何从PYQT4中的类中调用函数

时间:2017-07-31 22:07:39

标签: python pyqt4

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在按下时会删除,但是Page函数没有正确运行,因为btn2没有出现。

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

TIA获取有关为什么没有运行Page功能的帮助。我正在使用python 2,7和pyqt4

1 个答案:

答案 0 :(得分: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()