Qt for python,按照命名范式来命名槽函数,没有实现自动关联,如何解决?

在跟着《Python Qt GUI 与可视化编程》这本书学习时,学到这一小节:为组件的内建信号编写槽函数。

目标是点击窗体上的按钮,清除文本框的内容。

一些代码:
import sys
from ui_Dialog import Ui_Dialog
from PySide6.QtWidgets import *

# ui_Dialog是.ui文件转换出来的.py文件,Ui_Dialog是里面的一个类
class QmyDialog(QDialog):
    def __init__(self, parent=None):
        super(QmyDialog, self).__init__(parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

    def on_btnClear_clicked(self):
        self.ui.textEdit.clear()

窗体上按钮的Objectname是btnClear,我在Qt Creater界面确认了,也在ui文件转换出来的py文件里确认过了。

我反复确认了没有漏掉书上的任何一步。但是不知道为什么没能实现槽函数与信号的自动连接。
尝试在__init__底下添加
self.ui.btnClear.clicked.connect(self.on_btnClear_clicked)

结果居然可以了!但是书上没有我刚添加的代码,而且加了这句代码就不是自动连接了吧。有人知道为什么吗?

class QmyDialog(QDialog):
    def __init__(self, parent=None):
        super(QmyDialog, self).__init__(parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.btnClear.clicked.connect(self.on_btnClear_clicked)
    def on_btnClear_clicked(self):
        self.ui.textEdit.clear()

可以运行的代码如上,但这种写法应该是自定义槽函数的写法才对啊

用装饰器增强槽函数!!!
在类底下的函数定义前面,加@Slot (pyside6写法)
如果这个函数需要参数的话,比如需要str类型的参数,就在前面加@Slot(str)

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。