Python 3,PyQt 4:为GUI控件拆分大类

时间:2012-07-12 08:52:35

标签: python oop qt4 python-3.x pyqt4

PyQt4 GUI的我的类MainWindow(QMainWindow)现在已经增长,我想以某种方式拆分它。问题是所有处理信号的函数都是非常相互关联的,并且会影响类的其他功能。有没有办法将它分成几个类/文件?也许将所有信号分成一个类?我真的不明白如何在技术上做到这一点......我也听说Qt(或PyQt)对多重继承有一些限制,这可以解决我想的问题(同样,对我来说不是很明显)。

就像现在看起来一样(当然非常简化):

calss MainWindow(QMainWindow):
   ...
   def f1(self):
      if self.a1 == '...':
       ...
   def f2(self):
      if self.a2 == '...':
       ...
   def update(self):
      self.f3()
      self.f4()
      self.lineEdit.setText(self.a3)
      ...
   ...
   def on_radioButton_toggled(self):
      if self.radioButton.isChecked():
         self.a1 = '...'
   def on_comboBox_currentIndexChanged(self):
      if self.checkBox.isChecked():
         self.a2 = '...'
         self.f1()
      else:
         self.f2()
      self.update()
   ...

1 个答案:

答案 0 :(得分:1)

在我的应用程序中,我这样做了,主窗口包含子窗口小部件(框架和东西......),主窗口基本上做两件事:初始化它的子节点并连接它们之间的信号。像这样你有一个视图层次结构,这对于处理那么重要的事情要简单得多。

我认为从你的程序到一个更加层次化的程序没有一个无痛的举动,我可以说:你应该尽早,但我没有。 = P 为了设计主窗口及其孩子,QTdesigner非常方便。

是的,AFAIK类不应该继承多个PyQt类。