gpt4 book ai didi

python - 使用不同类的函数来连接信号

转载 作者:行者123 更新时间:2023-12-01 05:50:34 27 4
gpt4 key购买 nike

您好,我正在制作一个程序,我正在使用 stackedLayout 来显示程序中的不同“区域”。我想使用类来“分离”与某些区域相关的功能。例如Area1有一个开始按钮和一个清除按钮,当按下开始按钮时,它运行程序,当按下清除按钮时,该区域被清除。当我定义在主类中启动和清除的函数时,按钮工作正常,但是当我从另一个类调用它们时,什么也没有发生。

ma​​in.py

class Program(QtGui.QMainWindow, Interface.Ui_MainWindow):
def __init__(self, parent=None):
super(Program, self).__init__(parent)
self.setupUi(self)

run = hello()
self.startButton.clicked.connect(run.hello1)
self.clearButton.clicked.connect(run.hello2)

class hello(object):
def hello1(self):
print "start button"

def hello2(self):
print "stop button"

有人可以解释一下为什么当我点击按钮时没有打印任何内容吗?

最佳答案

您没有保留对 hello 实例的引用。因此,它会在 __init__ 结束后被垃圾收集,并且在您按下按钮时不可用。

尝试将其存储为实例属性 (self.run),而不是局部变量 (run):

class Program(QtGui.QMainWindow, Interface.Ui_MainWindow):
def __init__(self, parent=None):
super(Program, self).__init__(parent)
self.setupUi(self)

self.run = hello()
self.startButton.clicked.connect(self.run.hello1)
self.clearButton.clicked.connect(self.run.hello2)

class hello(object):
def hello1(self):
print "start button"

def hello2(self):
print "stop button"

关于python - 使用不同类的函数来连接信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14469109/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com