PyQt信号连接但不调用方法..(PyQt4.8,Python 3.2)

时间:2011-04-16 18:35:51

标签: python python-3.x pyqt pyqt4 signals-slots

嘿伙计们,我知道这个问题不够明确(无法找到如何在单行中解释概率)。我正在开发一个项目,我在主类中包含一个集中的gui,项目的各个组件由其他类的组合对象组成(在单独的文件中编码)。为了保持交换数据,每个对象也有主要类的对象(编辑:将尝试E.Bendersky建议的方法)。因此,每个组件的信号是分开连接的。

这是classA的构造函数中的连接代码;

QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.impAln)
QtCore.QObject.connect(self.ui.comboBox_2, QtCore.SIGNAL("currentIndexChanged(int)"), self.makeAlnTable)
QtCore.QObject.connect(self.ui.pushButton_2, QtCore.SIGNAL("clicked()"), self.reset)

classB的构造函数中的连接代码;

QtCore.QObject.connect(self.ui.comboBox_3, QtCore.SIGNAL("currentIndexChanged(int)"), self.enableLineEdits)
QtCore.QObject.connect(self.ui.comboBox_4, QtCore.SIGNAL("currentIndexChanged(int)"), self.enableLineEdits)
QtCore.QObject.connect(self.ui.comboBox_5, QtCore.SIGNAL("currentIndexChanged(int)"), self.enableLineEdits)
QtCore.QObject.connect(self.ui.pushButton_4, QtCore.SIGNAL("clicked()"), self.wrdMaker)
QtCore.QObject.connect(self.ui.pushButton_3, QtCore.SIGNAL("clicked()"), self.reset)

问题是当创建classA的实例时,连接和信号工作正常。但是当创建classB的实例时,相应的信号不起作用(按钮不启动方法等;不会引发错误/异常)。我尝试在线查看“使用Python和Qt进行快速编程”,但没有一个能满足这个特定问题。

非常感谢任何帮助,在此先感谢..

1 个答案:

答案 0 :(得分:1)

事实上,恕我直言的问题太过模糊。如果没有具体的 minimal 代码示例来演示问题,那将很难帮助您。

我想解决你写的一个令人不安的事情:

  

保持每个对象的数据交换   有主类的对象   也包含在其中

这几乎肯定是一个坏主意,而且正是Qt的信号和插槽设计用于解决而不创建这种耦合。你让所有对象都知道一些“主要”的中心对象 - 等待发生的设计灾难。为什么不用信号和插槽交换数据,没有这个额外的组合?

这可能听起来偏离主题,但我经常发现过于复杂的设计会导致细微的编程错误,在设计解开之前难以解释和调试。