2017-08-28 101 views
-1

点击我要如何改变一个标签的,直到按钮被点击PyQt的(我如何保持这种环路)的文本 这里是代码我试图如何更改标签的文本,直到按钮在PyQt的

 from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName(_fromUtf8("MainWindow")) 
     MainWindow.resize(376, 290) 
     MainWindow.setMinimumSize(QtCore.QSize(376, 290)) 
     MainWindow.setMaximumSize(QtCore.QSize(376, 290)) 
     self.centralwidget = QtGui.QWidget(MainWindow) 
     self.centralwidget.setObjectName(_fromUtf8("centralwidget")) 
     self.pushButton = QtGui.QPushButton(self.centralwidget) 
     self.pushButton.setGeometry(QtCore.QRect(150, 210, 75, 23)) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     self.label = QtGui.QLabel(self.centralwidget) 
     self.label.setGeometry(QtCore.QRect(140, 70, 91, 31)) 
     self.label.setObjectName(_fromUtf8("label")) 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.statusbar = QtGui.QStatusBar(MainWindow) 
     self.statusbar.setObjectName(_fromUtf8("statusbar")) 
     MainWindow.setStatusBar(self.statusbar) 
     self.i = 1 
     while self.pushButton.clicked: 
      self.count() 
     self.retranslateUi(MainWindow) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 
    def count(self): 
     self.i+=1 
     print self.i 
     self.label.setText(str(self.i)) 

    def retranslateUi(self, MainWindow): 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 
     self.pushButton.setText(_translate("MainWindow", "PushButton", None)) 
     self.label.setText(_translate("MainWindow", "TextLabel", None)) 


if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication([]) 
    MainWindow = QtGui.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 
    sys.exit(app.exec_()) 

我想这个代码,但GUI没有显示出来,并进入一个无限loop.so,我怎么循环验证码正确

这是L OOP部分和功能我一直

 self.i = 1 
     while self.pushButton.clicked: 
      self.count() 
def count(self): 
     self.i+=1 
     print self.i 
     self.label.setText(str(self.i)) 

在此先感谢

raajvamsy

+0

您希望在QLabel上按下并显示按钮时数量会增加。我是对的? – eyllanesc

+0

不,我想增加数量,直到点击按钮(当点击按钮时,计数应该停止) –

+0

试试我的解决方案,使用完整的代码来证明它,如果你帮助我的答案不要忘记标记为正确。 – eyllanesc

回答

1

的GUI不符合循环友好,因为他们有默认的主循环:app.exec_(),最值得推荐的,你的情况是使用一个QTimer,一旦显示应用程序就立即启动,并在按下按钮时停止。

我总是建议不要修改生成的Qt Designer中的代码,这是更好地创建一个实现逻辑一种新的类,并使用所产生的观点,上述所有我实现它在下面的代码:

class MainWindow(QtGui.QMainWindow, Ui_MainWindow): 
    counter = 0 
    def __init__(self, parent=None): 
     QtGui.QMainWindow.__init__(self, parent) 
     self.setupUi(self) 
     timer = QtCore.QTimer(self) 
     timer.timeout.connect(self.onTimeout) 
     timer.start(10) # 10 milliseconds 
     self.pushButton.clicked.connect(timer.stop) 

    def onTimeout(self): 
     self.counter += 1 
     self.label.setText(str(self.counter)) 
相关问题