2017-08-28 156 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))