作者jasonhsu14 (14号星期五的杰森)
看板Python
标题[问题] threading能代替QThread执行读取条吗
时间Tue May 21 13:55:49 2019
大家好,最近在学习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_())
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.22.64.151
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1558418151.A.91B.html
1F:→ Raymond0710: Actions()这样每次会new一个物件 不是window 05/21 22:02