我有一个repeat
python函数和一个只有一个按钮的 test.ui 。我怀疑的是如何在每次单击按钮时完全循环相同的功能一次。因为每当我表演时对我来说都是:
self.pushButton.clicked.connect(self.repeat)
它循环多次进入函数而不是一次。我通过每次到达函数时递增一个值来找到它。每按一下按钮,如何准确地访问函数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_())
答案 0 :(得分:2)
在您的代码中,您已多次建立连接。您应该仅在self.pushButton.clicked.connect(self.repeat)
但不在__init__
函数中使用repeat()
建立它。换句话说,删除第二次出现(即在repeat()
),你应该没事。连接应该只建立一次,因为一旦建立它就会持续到disconnect()
被调用,或直到slot
或signal
被销毁。