【发布时间】:2017-09-01 22:04:24
【问题描述】:
我按照一些在线教程学习了使用 PyQt 进行线程化,但该示例使用 PyQt4,而我正在使用 PyQt5。我阅读此链接以获取一些信息:http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html。
但我仍然不明白我应该如何更改下面的示例以使其与 PyQt5 一起使用。
这个例子应该做的是在进度条上显示cpu百分比,我使用线程的原因是当cpu负载变化时进度条值会改变。
所以仅供参考,下面的代码是适用于 PyQt4 但不适用于版本 5 的代码,如果有人能告诉我使用 PyQt5 的正确方法会很有帮助。
我的示例代码:
import sys
import os
import sysInfo
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QWidget, QApplication
from test import Ui_Form
class MainUiClass(QWidget, Ui_Form):
def __init__(self, parent=None):
super(MainUiClass, self).__init__(parent)
self.setupUi(self)
self.threadclass = ThreadClass()
self.threadclass.start()
self.connect(self.threadclass, SIGNAL('CPU_VALUE'), self.updateProgressBar)
def updateProgressBar(self, val):
self.progressBar.setValue(val)
class ThreadClass(QThread):
def __init__(self, parent=None):
super(ThreadClass, self).__init__(parent)
def run(self):
while 1:
val = sysInfo.getCPU() # get cpu load
self.emit(SIGNAL('CPU_VALUE'), val)
if __name__ == '__main__':
app = QApplication([])
window = MainUiClass()
window.show()
sys.exit(app.exec_())
【问题讨论】:
-
请详细说明。您对显示的代码有任何实际问题吗?如果是这样,在问题本身中描述这些问题时要非常详细和具体。请不要将相关信息放入 cmets:请改用问题下方的编辑按钮。
-
将编译 UI 父类的代码放入脚本中是个坏主意,但我知道这是否正在进行中。
-
这是发出信号的旧方式。不确定它在 PyQt5 中是否有效。我发现pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html 很有用。
-
@MadPhysicist 我从代码中删除了它,但它在那里是因为这确实是一项正在进行的工作。
-
@Aidenhjj 您介意将我的示例更改为发射信号的新方式吗?这对我有很大帮助!