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