pyside6 QThread 以及自定义信号 测试
import sys
import random
from time import sleep
from PySide6 import QtCore as qc
from PySide6 import QtWidgets as qw
# from PySide6 import QtGui as qg
class sub(qc.QThread):
'''定义一个后台线程'''
# 定义一个 信号, 信号要传递一个 bool 型参数
sg = qc.Signal(bool)
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
# connect
self.sg.connect(self.m1)
# 自定一个信号,在后续,会触发这个信号。这个信号在别的线程
self.sg2:qc.Signal = None
self._flg = False
# 写一个 具体的过程
def run(self):
try:
for _ in range(100):
sleep(0.2)
if self._flg:
if self.sg2 is not None:
# 在后台线程 发出信号, 发给相连接的前面线程
self.sg2.emit()
except Exception as error:
print(str(error))
raise(error)
# 接收信号,处理事务
@qc.Slot(bool)
def m1(self, v:bool):
self._flg = v
class MyWidget(qw.QWidget):
def __init__(self):
super().__init__()
self.sgg:qc.Signal = None
self.hello = ["Hallo A", "Hallo B", "Hallo C", "Hallo D"]
self.v = True
self.button = qw.QPushButton("Click me!")
self.text = qw.QLabel("Hello World", alignment=qc.Qt.AlignCenter)
self.b3 = qw.QPushButton("click to start")
self.layout = qw.QVBoxLayout(self)
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
self.layout.addWidget(self.b3)
# qc.Qt.ConnectionType.QueuedConnection 在信号的接收方,延时执行动作
qc.QObject.connect(self.button, qc.SIGNAL("clicked()"), self.magic, qc.Qt.ConnectionType.QueuedConnection)
qc.QObject.connect(self.b3, qc.SIGNAL("clicked()"), self.m3, qc.Qt.ConnectionType.QueuedConnection)
# 前台按扭的动作
@qc.Slot()
def magic(self):
t = self.text.text()
while True:
s = random.choice(self.hello)
if s != t:
t = s
break
self.text.setText(t)
# 前台按扭的动作,同时更新界面,并把信号发给后台
@qc.Slot()
def m3(self):
if self.sgg is not None:
# 传一个 bool 值给后台
self.sgg.emit(self.v)
self.v = not self.v
else:
print('None')
# 更新界面的文字
self.b3.setText("click to start" if self.v else"click to stop")
if __name__ == "__main__":
app = qw.QApplication([])
widget = MyWidget()
widget.resize(250, 150)
# 创建后台线程
p = sub()
# 信号的传递
widget.sgg = p.sg
p.sg2 = widget.button.clicked
widget.show()
# 起动后台线程
p.start()
sys.exit(app.exec())

pyside6 QThread 以及自定义信号 测试的更多相关文章
- pyqt5 使用 QTimer, QThread, pyqtSignal 实现自动执行,多线程,自定义信号触发。
渣渣用法,请等待我心情好的时候更新. 1.第一个例子 1.1 先看mainwindow.py from PyQt5 import QtCore, QtGui, QtWidgets class Ui_M ...
- Qt自定义信号槽的使用浅析+实例
1. Qt中自定义信号槽的使用 Qt框架提供的信号槽在某些特定场景下是无法满足我们的项目需求的,因此我们还设计自己需要的的信号和槽,使用connect()对自定义的信号槽进行连接. 如果想要使用自定义 ...
- Qt之自定义信号和槽函数
自定义信号和槽函数: 1.类的声明和实现分别放在.h和.cpp文件中: 2.类声明包含Q_OBJECT宏: 3.信号只要声明不要设计其的实现函数 4.发射信号用emit关键字 5.自定义槽的实现与普通 ...
- linux 自定义信号
从来没试过linux自定义信号,查了下,说是系统只提供了SIGUSR1和SIGUSR2两个,就两个够吗?更要命的是如果要自定义信号如#define SIG_MYSIG ....的话要改内核才行,哥 ...
- 【PyQt5-Qt Designer】pyqtSignal()-高级自定义信号与槽
PyQt 5信号与槽的几种高级玩法 参考:http://www.broadview.com.cn/article/824 from PyQt5.QtCore import QObject , pyqt ...
- Qt 学习之路 2(5):自定义信号槽
Home / Qt 学习之路 2 / Qt 学习之路 2(5):自定义信号槽 Qt 学习之路 2(5):自定义信号槽 豆子 2012年8月24日 Qt 学习之路 2 131条评论 上一节我们详 ...
- QT_5_ Qt中信号和槽 + 自定义信号和槽 + lambda 表达式
1.Qt中信号和槽 1.1 需求:点击按钮关闭窗口 1.2 利用connect进行链接 1.3 参数1 信号发送者(指针) 参数2 发送的信号(信号地址) 参数3 信号的接受者(指针) 参数4 处理槽 ...
- Qt5教程: (3) 自定义信号与槽
1. 自定义槽 槽可以是任何成员函数.普通全局函数.静态函数 槽函数和信号的参数和返回值要一致 由于信号是没有返回值的, 槽函数也一定没有返回值 首先在mainwidget.h中添加槽函数: publ ...
- QT自定义信号和槽
最近项目中使用到QT,在此记录一下QT的核心,信号与槽: QObject::connect(const QObject *sender, const char *signal, const QObje ...
- Linux信号使用及自定义信号
linux自定义信号:https://www.cnblogs.com/bigben0123/p/3186661.html linux信号.值及解释:https://blog.csdn.net/luot ...
随机推荐
- virutalenvwrapper安装和使用
目录 virutalenvwrapper安装和使用 目的: 1.安装pip 2.安装virutalenv和virutalenvwrapper 3.配置环境变量 4. 创建虚拟环境 5.列出全部的虚拟环 ...
- Ruby on Rails Active Record数据库常用操作
目录 创建 批量插入 判断是否存在 Ruby on Rails 日期查询方法 文档地址: https://freed.gitee.io/rails-guides/active_record_query ...
- iOS LLVM 中的宏定义
在阅读 Objc 库源码时常常会遇到很多宏定义,比如宏 SUPPORT_INDEXED_ISA.SUPPORT_PACKED_ISA,代码如下所示: // Define SUPPORT_INDEXED ...
- ansible系列(21)--ansible的变量注册Register
1. 变量注册Register register 关键字可以将某个 task 任务结果存储至变量中,最后使用 debug模块 输出变量内容,可以用于后续排障: 示例一:register的基本使用: # ...
- wordpress多站点设置,移除 多站点链接中的 /blog 前缀
★★★最近想给自己的wordpress添加多个站点,就查了查相关的设置方法,以下我亲自尝试可行 1.首先需要开始配置:在网站根目录下的 wp-config.php 添加: define('WP_ALL ...
- C语言:顺序存储循环队列#保存文件中单词的最后三个字母
目录 前言 全局变量和结构体代码 四个任务 ①计算文件中的单词数量 ②保存单词最后三个字母到链表中 ③将链表的内容导出到另一个文件中 ④将新文件的内容打印到屏幕中 @完整代码@ 前言 本博客最终会完成 ...
- 记录一次配置iis与Sqlserver的集成windows账户登录
1.连接字符串,要写 "Data Source=[主机名称];Initial Catalog=[数据库名称];Integrated Security=True" 2.iis下配 ...
- HttpClient 发送表单
基础代码 只包含最简单的代码,不包含乱码解决.文件上传. import org.apache.http.Consts; import org.apache.http.HttpEntity; impor ...
- itest work 开源接口测试&敏捷测试管理平台 9.5.0 GA_u3,优化及修复关键 BUG
(一)itest work 简介 itest work (爱测试) 一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest w ...
- Linux设备驱动--轮询操作
注:本文是<Linux设备驱动开发详解:基于最新的Linux 4.0内核 by 宋宝华 >一书学习的笔记,大部分内容为书籍中的内容. 书籍可直接在微信读书中查看:Linux设备驱动开发详解 ...