Я пытаюсь изучить PyQt4 и сделал для этой цели следующий графический интерфейс - другого применения у него нет.
Код работает почти так, как ожидалось, единственное, что не работает, это предложение 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_()
... Я ожидаю, что программа напечатает «Stop loop» в виджете браузера перед выходом, но это не так.
else:
self.browser.append('Stop loop')
time.sleep(3)
sys.exit()
Теперь у меня есть 3 вопроса:
- Почему он не печатает «Стоп-цикл»
- Если вы представляете, что цикл вместо этого был потоком данных из последовательного соединения, как я мог напечатать только каждое 10-е значение. В цикле это будет 1, 11, 21... и так далее
- Общие комментарии к моему коду
Спасибо заранее