0

PyQt4 GUIのクラスMainWindow(QMainWindow)が大きくなり、何とか分割したいと考えています。問題は、シグナルを処理するすべての多数の関数が非常に相互接続されており、クラスの他の関数に影響を与えることです。それをいくつかのクラス/ファイルに分割する方法はありますか? たぶん、すべての信号を 1 つのクラスに分けますか? 技術的にそれを行う方法がよくわかりません...また、多重継承に対して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()
   ...
4

1 に答える 1

1

私のアプリケーションでは、子ウィジェット(フレームなど)を含むメインウィンドウがあり、メインウィンドウは基本的に2つのことを行います:子を初期化し、それらの間の信号を接続します。このように、その 1 つの大きなことを処理するのがはるかに簡単なビューの階層があります。

あなたのプログラムからより階層的なプログラムへの無痛の移行はないと思います。=P メイン ウィンドウとその子ウィンドウを設計するには、QTdesigner が非常に便利です。

はい、私の知る限り、クラスは複数の PyQt クラスから継承するべきではありません。

于 2012-07-12T16:23:38.277 に答える