Я только недавно начал программировать и Python (PyQt) в частности. У меня есть основной QMainWindow
. Но я хотел отделить его от виджетов пользовательского интерфейса, чтобы все элементы Windows (меню, панели инструментов, общие кнопки) находились в QMainWindow
, но все виджеты, специфичные для программы / пользовательского интерфейса (кнопки, поля со списком, изображения , флажки и т. д.) находятся в отдельном классе QWidget
, но я не уверен, правильно ли я это делаю.
Вот как я это делаю:
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)
Что вы предлагаете по поводу разбиения кода на мелкие части? Как это лучше сделать? Или для пользовательского интерфейса все это может быть в одном большом месте? Стоит ли вообще разбивать код / классы пользовательского интерфейса на отдельный файл?
Спасибо.
[решено]
Я обнаружил свою ошибку - я удалил main_widget из класса виджета пользовательского интерфейса (теперь все виджеты пользовательского интерфейса размещены непосредственно в самом виджете класса пользовательского интерфейса) и делаю только следующее:
self.main_layout.addWidget(self.form_widget)
больше нет проблем с меню