1

2 つのカスタム ウィジェット (QtGui.QWidget に基づく 2 つのクラス) があります。QtGui.QMainWindow__init__で、インスタンスを作成します。

self.MyWidget1 = MyWidget1()
self.MyWidget2 = MyWidget2()

部分的に2 つのボタン (QtGui.QPushButton) もあり__init__、ユーザーがそれぞれをクリックすると 2 つのスロットがあります。

def clickButton1(self):
  self.setCentralWidget(self.MyWidget1)

def clickButton2(self):
  self.setCentralWidget(self.MyWidget2)

しかし、それは最初のクリックでのみ機能し、PyQt は基になるウィジェット (MyWidget1 または MyWidget2) が削除されたと言います。sipモジュールによって行われたと思います。中央ウィジェットのリセット後にウィジェットが削除されないようにする方法はありますか? ありがとう!

4

1 に答える 1

2

ほとんど不可能だと思います。

setCentralWidgetドキュメントから:

注: QMainWindow はウィジェット ポインターの所有権を取得し、適切なタイミングで削除します。

したがって、新しいMyWidgetインスタンスを作成する必要があります。

def clickButton2(self):
    self.setCentralWidget(MyWidget2())

しかし、そのようなことを行う正しい方法は、QStackedWidgetを使用することです

于 2012-02-02T17:32:20.180 に答える