qtDesigner中设计自定义的信号与槽时面临的困境(Pyqt5)

通过qtDesigner设计的自定义槽函数,在编译之后,根本没有;执行Ui_XXX.py文件是,会报出来未定义XXX槽函数的错误

 

之前设计的软件中,Ui_XXX.py文件中有没有DIYSlot()呢?

答案是没有。

要想使用DIYSlot()

首先要创建一个新的class,比如MyClass()

MyClass()要继承,Ui_XXX,同时还要继承QMainWindow(必须继承QMainWindow,因为Ui_XXX.py中的setupUi()函数接收的参数必须是QMainWindow类);

语法为:

MyClass(QMainWindow, Ui_XXX):

继承之后,MyClass的构造函数要继承父类QMainWindow的构造函数

语法为:

super(子类,self).__init__(参数1,参数2,....)
super(MyClass, self).__init__()

还有一种经典写法:

父类名称.__init__(self,参数1,参数2,...)

 

然后补充以下的内容:

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    # MainWindow = QtWidgets.QMainWindow()
    ui = myWindow()#创建了一个QMainwidow的类,里边包含了DIYSlot()的方法
    ui.setupUi(ui)#调用了Ui_XXX中的方法,把控件都放了进去
    ui.show()#使用QMainwidow类中自带的show方法,把窗口显示了出来
    # ui.setupUi(MainWindow)
    # MainWindow.show()
    sys.exit(app.exec_())

关于python中类的继承的知识点

请参考:https://www.runoob.com/w3cnote/python-extends-init.html

 

完成了!

 

 

---------

如何让每个控件发送自定义的信号呢?

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值