打印循环的 PyQt4 Gui
Posted
技术标签:
【中文标题】打印循环的 PyQt4 Gui【英文标题】:PyQt4 Gui that prints loop 【发布时间】:2013-11-18 09:42:09 【问题描述】:我正在尝试学习 PyQt4,并为此制作了以下 Gui - 它没有其他用途。
代码几乎按预期工作 - 唯一没有的是 'else' 子句。
import sys
import time
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__ (self, parent=None):
super(Form, self).__init__(parent)
self.startButton = QPushButton('Start')
self.stopButton = QPushButton('Stop')
self.browser = QTextBrowser()
self.myLabel = QLabel()
layout = QVBoxLayout()
layout.addWidget(self.startButton)
layout.addWidget(self.stopButton)
layout.addWidget(self.browser)
layout.addWidget(self.myLabel)
self.setLayout(layout)
self.startButton.setFocus()
self.startButton.clicked.connect(self.guiLoop)
self.stopButton.clicked.connect(self.guiLoop)
self.setWindowTitle('Loop Gui')
def guiLoop(self):
state = False
text = self.sender()
self.myLabel.setText(text.text())
time.sleep(1)
if text.text() == 'Start':
state = True
else:
state = False
i = 0
while state:
time.sleep(.1)
self.browser.append(str(i))
QApplication.processEvents()
i += 1
else:
self.browser.append('Stop loop')
time.sleep(3)
sys.exit()
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
...我希望程序在退出之前会在浏览器小部件中打印“停止循环”,但它不会
else:
self.browser.append('Stop loop')
time.sleep(3)
sys.exit()
我现在有 3 个问题:
-
为什么不打印“停止循环”
如果您想象循环是来自串行连接的数据流,我怎么能只打印每 10 个值。在循环中会是 1、11、21 ... 等等
我的代码中的常规 cmets
提前谢谢
【问题讨论】:
【参考方案1】:在你的 else 部分添加以下行
QApplication.processEvents()
喜欢
while state:
time.sleep(.1)
if i % 10 == 1:
self.browser.append(str(i))
QApplication.processEvents()
i += 1
else:
self.browser.append('Stop loop')
QApplication.processEvents()
time.sleep(3)
sys.exit()
输出类似于:1 11 21 31 等。和停止循环
【讨论】:
感谢您的帮助,赛义德!以上是关于打印循环的 PyQt4 Gui的主要内容,如果未能解决你的问题,请参考以下文章