|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近遇到个问题想请教下各位高手,不胜感激!
程序有2个窗体,分别是主窗体M和功能窗体A,主窗体M的类定义在m.py文件中,功能窗体A的类定义在a.py文件中
在主窗体M中点击菜单项打开窗体A,在窗体A中点击按钮执行槽函数,槽函数完成一系列任务后,还需要根据情况判断是否让主窗体的按钮和菜单项点亮
现在的思路是:在窗体A中自定义一个信号,当满足条件时就发射信号,信号与主窗体M中自定义的槽函数绑定,该槽函数执行主窗体的按钮和菜单项点亮操作
网上查找的做法是所有内容都写在了一个py文件里:
Class A(QObject):
此处省略 功能窗体A的定义及部分业务逻辑
...
#自定义信号
customize_signal=pyqtSignal()
def f1():
if conditional is True:
...
#发射信号
self.customize_signal.emit()
Class M(QObject):
此处省略 主窗体M的定义及部分业务逻辑
...
#自定义槽函数
def do_customize_signal(self):
self.ui.pushButton_calculate.setEnabled(True)
self.ui.action_calculate.setEnabled(True)
if __name__=='__main__':
aa=A()
mm=M()
#将自定义信号绑定到槽函数
aa.customize_signal.connect(mm.do_customize_signal)
现在的问题是 我的设计是主窗体M和功能窗体A这2个类在2个py文件中,且在m.py中已经import a.py了,所有的功能实现都在各自类定义里面完成,创建app程序时(app=QtWidgets.QApplication(sys.argv))只生成一个M类实例并显示就完了,没有额外业务逻辑。那么,如何才能将a.py中的自定义信号与m.py中的槽函数绑定呢?需要在a.py中import m.py并创建类实例吗(app中已创建M类实例,此处再创建是不是冗余了)?互相import感觉怪怪的。
另外,我的M类和A类是继承自QMainWindow类,而不是QObject类,是不是就不能做自定义信号这事了?
|
|