pyside6 不同线程对UI界面的渲染方式
示例代码
import sys,time from PySide6.QtCore import Signal,Slot,Qt,QThread from PySide6.QtWidgets import QWidget,QVBoxLayout,QPushButton,QLabel,QApplication class mainWindow(QWidget): def __init__(self) -> None: super().__init__() self.label = QLabel("Hello!") self.label.setAlignment(Qt.AlignCenter) self.but = QPushButton("Click!") self.but.clicked.connect(self.fun) self.layout = QVBoxLayout() self.layout.addWidget(self.label) self.layout.addWidget(self.but) self.setLayout(self.layout) self.setWindowTitle('Signal Example') self.resize(300,300) self.show() @Slot() def fun(self): self.th = Th() self.th.timer.connect(self.flushlabel) self.th.finish.connect(self.isFinish) self.th.start() @Slot(int) def flushlabel(self,nu): self.label.setText(str(nu)) @Slot(bool) def isFinish(self,bo): if bo is True: self.but.setEnabled(True) else: self.but.setEnabled(False) class Th(QThread): timer = Signal(int) finish = Signal(bool) def __init__(self) -> None: super().__init__() def run(self): print('Start Timer') self.finish.emit(False) for x in range(5): self.timer.emit(5-x) time.sleep(1) self.finish.emit(True) if __name__ == '__main__': app = QApplication([]) widgets = mainWindow() sys.exit(app.exec())
本文来自博客园踩坑狭,作者:韩若明瞳,转载请注明原文链接:https://www.cnblogs.com/han-guang-xue/p/16900047.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?