[问题] threading能代替QThread执行读取条吗

楼主: jasonhsu14 (小健人)   2019-05-21 13:55:49
大家好,最近在学习PyQt,也透过RIP Tutorial的网页资源中学习到QProgressBar的用法
详细程式码可参阅 http://tinyurl.com/y4fc8erp
透过网页也了解QThread如何应用在QProgressBar
但自己心中有一个问题是,如果不用QThread,而改用threading.thread
有办法达到同样的效果吗
因为threading.thread似乎没有类似QThread的emit功能
因此我修改成用呼叫的方式去执行
(详见个人程式码中的Actions().onCountChanged(count))
但并无法执行...,还是说要使用QProgressBar一定要搭配QThread才行
还麻烦各位指教,谢谢
个人修改的程式码如下:
import sys
import time
import threading
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import (QApplication, QDialog,
QProgressBar, QPushButton)
TIME_LIMIT = 100
class External(threading.Thread):
def run(self):
count = 0
while count < TIME_LIMIT:
count +=1
time.sleep(0.1)
print(count)
Actions().onCountChanged(count)
class Actions(QDialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Progress Bar')
self.progress = QProgressBar(self)
self.progress.setGeometry(0, 0, 300, 25)
self.progress.setMaximum(100)
self.button = QPushButton('Start', self)
self.button.move(0, 30)
self.show()
self.button.clicked.connect(self.onButtonClick)
def onButtonClick(self):
self.calc = External()
self.calc.start()
def onCountChanged(self, value):
self.progress.setValue(value)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Actions()
sys.exit(app.exec_())
作者: Raymond0710 (雷门)   2019-05-21 22:02:00
Actions()这样每次会new一个物件 不是window

Links booklink

Contact Us: admin [ a t ] ucptt.com