pyside6初始化

from PySide6.QtWidgets import QWidget, QApplication, QPushButton, QHBoxLayout, QGroupBox
import Ui_uis

class MyMainWindow(QWidget):
	def __init__(self):
		super().__init__()
		# 初始化 UI
		self.ui = Ui_uis.Ui_Form()
		self.ui.setupUi(self)

if __name__ == "__main__":
	app = QApplication([])
	mainWindow = MyMainWindow()
	mainWindow.show()
	app.exec()

自定义信号槽MySignals

from PySide6.QtCore import QObject, Signal


class signalDefinition(QObject):  # 只有继承自QObject的类才可以定义信号
    signal_none = Signal()  # 无参数的信号
    signal_int = Signal(int)  # 带整数参数的信号
    signal_float = Signal(float)  # 带浮点数参数的信号
    signal_str = Signal(str)  # 带字符串参数的信号
    signal_list = Signal(list)  # 带列表参数的信号
    signal_dict = Signal(dict)  # 带字典参数的信号
    signal_int_float_str = Signal(int, float, str)  # 带整数、浮点数、字符串参数的信号
    signal_r2 = Signal((int,), (str,))  # 创建重载型信号,相当于创建了2个信号
    signal_r3 = Signal(
        (
            int,
            str,
        ),
        (str,),
        (list,),
    )  # 创建重载型信号,相当于创建了3个信号
    signal_r = Signal((), (bool))  # 创建重载型信号,一个不带参数,另一个带布尔型参数

    def __init__(self, parent=None):
        super().__init__(parent)
        self.signal_none.connect(self.slot_none)  # 信号与槽的连接
        self.signal_list.connect(self.slot_list)
        self.signal_r2[int].connect(
            self.slot_signal_r2_1
        )  # overload型信号的第一个信号可以不指定类型
        self.signal_r2[str].connect(
            self.slot_signal_r2_2
        )  # overload型信号的第一个信号可以不指定类型

        self.signal_none.emit()  # 发送信号
        self.signal_list.emit([1, 2, 3, 4])
        self.signal_r2[int].emit(1000)
        self.signal_r2[str].emit("信号重载Str")

    def slot_none(self):  # 自定义槽函数
        print("slot_none emit")

    def slot_list(self, list):
        for i in list:
            print(i)

    def slot_signal_r2_1(self, v: int):
        print(v)

    def slot_signal_r2_2(self, s: str):
        print(s)


signalDefinition()

子线程运行

from PySide6.QtWidgets import QWidget, QApplication
from PySide6.QtCore import QObject, Signal, QThread, QRunnable, Slot, QThreadPool
from pyside_xxxx import Ui_Form

class _Task(QRunnable):  # 小推车
	def __init__(self, fn, *a, **k):
		super().__init__()  # 初始化小车
		self.fn = fn  # 把函数放进去
		self.a = a  # 把位置参数放进去
		self.k = k  # 把关键字参数放进去

	@Slot()
	def run(self):  # 线程会调用这个函数
		self.fn(*self.a, **self.k)  # 真正执行函数


_pool = QThreadPool.globalInstance()


def in_thread(fn, *a, **k):
	task = _Task(fn, *a, **k)  # 把函数和参数装进小车
	_pool.start(task)  # 把小车推进线程池,自动跑

class MyMainWindow(QWidget):
	def __init__(self):
		super().__init__()
		# 初始化 UI
		self.ui = Ui_Form()
		self.ui.setupUi(self)
		
	def click_bt_按钮槽函数(self):
		def q():
			pass # 耗时任务

		in_thread(q)  # 在新线程中执行翻译操作