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

 

完成了!

 

 

---------

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

 

 

 

posted @   bH1pJ  阅读(139)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示