私は最近プログラミング、特に Python (PyQt) を始めたばかりです。メインQMainWindow
クラスがあります。しかし、すべてのウィンドウのもの (メニュー、ツールバー、共通ボタン) が にあるように、UI ウィジェットから分離したかったのですQMainWindow
が、すべてのプログラム/UI 固有のウィジェット (pusgbuttons、コンボボックス、画像、チェックボックスなど) は別QWidget
のクラスにあります。しかし、これを正しく行っているかどうかはわかりません。
- レイアウトに問題があります。目に見えない何かがメニューを覆っているため、マウスでクリックできません。UI ウィジェットをメイン ウィンドウに正しく追加していないと思います。
これが私がそれを行う方法です:
class MyMainWindow(QMainWindow):
def __init__(self, parent = None):
super(MyMainWindow, self).__init__(parent)
self.main_widget = QWidget(self)
...
self.form_widget = FormWidget(self)
#This is my UI widget
self.main_layout = QVBoxLayout(self.main_widget)
self.main_layout.sizeConstraint = QLayout.SetDefaultConstraint
self.main_layout.addWidget(self.form_widget.main_widget)
#form_widget has its own main_widget where I put all other widgets onto
self.main_widget.setLayout(self.main_layout)
self.setCentralWidget(self.main_widget)
- アプリケーションが多数の小さなコード ファイルに分割されている他の Python プログラムを見てきました (私が理解しているように、すべてをメイン クラスに置くことは読み取り不能または管理不能です)。
コードを細かく分割することについて、あなたの提案は何ですか? どうしたら良いですか?それともUIの場合、すべてを1つの大きな場所に置くことができますか? UI コード/クラスを別のファイルに分割する必要がありますか?
ありがとうございました。
[解決済み]
私は自分の間違いを見つけました - UI ウィジェット クラスから main_widget を削除し (現在、すべての UI ウィジェットは UI クラス ウィジェット自体に直接配置されています)、これだけを行います:
self.main_layout.addWidget(self.form_widget)
メニューの問題はもうありません