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