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
完成了!
---------
如何让每个控件发送自定义的信号呢?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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 中如何实现缓存的预热?