我有一个repeat
python 函数和一个只有一个按钮的test.ui。我的疑问是如何在每次单击按钮时精确地循环相同的函数一次。因为对我来说,每当我表演时:
self.pushButton.clicked.connect(self.repeat)
它在函数中循环多次,而不是一次。我通过每次到达该函数时增加一个值来发现这一点。如何实现每次点击按钮时重复
一次的功能?
import sys
from PyQt4 import QtCore, QtGui, uic
qtCreatorFile = "test.ui"
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class Login(QtGui.QMainWindow, Ui_MainWindow):
i=1
def __init__(self):
QtGui.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.pushButton.setText("iam in init")
self.pushButton.clicked.connect(self.repeat)
def repeat(self):
self.pushButton.setText("iam in repeat"+str(self.i))
self.i=self.i+1
self.pushButton.clicked.connect(self.repeat)
if __name__ == "__main__":
app=QtGui.QApplication(sys.argv)
main = Login()
main.show()
sys.exit(app.exec_())
最佳答案
查看您的代码,您已多次建立连接。您应该仅在 __init__
中使用 self.pushButton.clicked.connect(self.repeat)
建立它,而不是在 repeat()
函数中建立它。换句话说,删除第二个出现的地方(即在 repeat()
中)就可以了。连接应该只建立一次,因为一旦建立,它就会持续到调用它的 disconnect()
或直到 slot
或 signal
被销毁.
关于python - PyQt QPushButton 信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39690243/