如何更改标签的文本,直到按钮在PyQt的
问题描述:
点击我要如何改变一个标签的,直到按钮被点击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
答
的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))
您希望在QLabel上按下并显示按钮时数量会增加。我是对的? – eyllanesc
不,我想增加数量,直到点击按钮(当点击按钮时,计数应该停止) –
试试我的解决方案,使用完整的代码来证明它,如果你帮助我的答案不要忘记标记为正确。 – eyllanesc