Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3,Pyqt4:为GUI控件拆分大型类_Python_Oop_Qt4_Python 3.x_Pyqt4 - Fatal编程技术网

Python3,Pyqt4:为GUI控件拆分大型类

Python3,Pyqt4:为GUI控件拆分大型类,python,oop,qt4,python-3.x,pyqt4,Python,Oop,Qt4,Python 3.x,Pyqt4,我的PyQt4 GUI类MainWindow(QMainWindow)现在已经增长,我想以某种方式拆分它。问题在于,所有处理信号的众多函数都是相互关联的,并且会影响该类的其他函数。有没有办法把它分成几个类/文件?也许把所有信号分成一类?我真的不明白技术上怎么做。。。我还听说Qt(或PyQt)对多重继承有一些限制,这可以解决我猜想的问题(同样,我不清楚具体如何) 正如现在看起来的一样(当然非常简单): 在我的应用程序中,我是这样做的,主窗口包含子窗口小部件(框架和东西…),主窗口基本上做两件事:初

我的PyQt4 GUI类
MainWindow(QMainWindow)
现在已经增长,我想以某种方式拆分它。问题在于,所有处理信号的众多函数都是相互关联的,并且会影响该类的其他函数。有没有办法把它分成几个类/文件?也许把所有信号分成一类?我真的不明白技术上怎么做。。。我还听说Qt(或PyQt)对多重继承有一些限制,这可以解决我猜想的问题(同样,我不清楚具体如何)

正如现在看起来的一样(当然非常简单):


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

我认为从你的程序到一个更高层次的程序并不是无痛的,我可以说:你应该早一点想到这一点,但我没有=P 设计主窗口及其子窗口非常方便

是的,类不应该从多个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()
   ...