gpt4 book ai didi

python - PyQt5 信号和线程

转载 作者:太空狗 更新时间:2023-10-30 00:48:15 25 4
gpt4 key购买 nike

我在 youtube 上观看了一个关于 PyQt4 信号的简短教程,但在运行一个小示例程序时遇到了问题。如何将从线程发出的信号连接到主窗口?

import cpuUsageGui
import sys
import sysInfo
from PyQt5 import QtCore

"""Main window setup"""
app = cpuUsageGui.QtWidgets.QApplication(sys.argv)
Form = cpuUsageGui.QtWidgets.QWidget()
ui = cpuUsageGui.Ui_Form()
ui.setupUi(Form)

def updateProgBar(val):
ui.progressBar.setValue(val)

class ThreadClass(QtCore.QThread):
def run(self):
while True:
val = sysInfo.getCpu()
self.emit(QtCore.pyqtSignal('CPUVALUE'), val)

threadclass = ThreadClass()

# This section does not work
connect(threadclass, QtCore.pyqtSignal('CPUVALUE'), updateProgBar)
# This section does not work

if __name__ == "__main__":
threadclass.start()
Form.show()
sys.exit(app.exec_())

最佳答案

信号必须在您的 ThreadClass 内部或之前创建,但当您在 ​​ThreadClass 内部发出信号时,最好在您的类内部创建它。

创建完成后,需要连接进度条功能。以下是在您的类(class)中创建和连接的信号示例。

class ThreadClass(QtCore.QThread):
# Create the signal
sig = QtCore.pyqtSignal(int)

def __init__(self, parent=None):
super(ThreadClass, self).__init__(parent)

# Connect signal to the desired function
self.sig.connect(updateProgBar)

def run(self):
while True:
val = sysInfo.getCpu()

# Emit the signal
self.sig.emit(val)

请记住,信号自 PyQt5 以来已经改变了样式:Description

如果你看过 PyQt4 的教程,那就不一样了。

关于python - PyQt5 信号和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40537026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com