我最近才开始编程和Python(PyQt)特别是。我有我的主要QMainWindow
类。但我想将它与UI小部件分开,以便所有窗口的东西(菜单,工具栏,常用按钮)都在QMainWindow
中,但所有程序/ UI特定的小部件(按钮,组合框,图像,复选框等)都在单独的QWidget
类。但我不确定我是否正确做这件事。PyQt - 如何添加单独的UI小部件到QMainWindow
- 我有布局的一个问题 - 看不见的东西被覆盖了菜单,使他们不被鼠标点击,我觉得我没有正确加入我的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代码/类分解成单独的文件吗?
谢谢。
[解决]
我发现我的错误 - 我删除从UI控件类main_widget(现在所有的UI控件直接放置在UI类的小部件本身),只有做到这一点:
self.main_layout.addWidget(self.form_widget)
没有更多的菜单问题
我发现我的错误。我已经从UI小部件中删除了main_widget,并将其本身用作所有其他小部件(按钮,编辑线等)的控件,而主类仅实例化UI部件(请参见上文) - 解决了菜单问题。 – linuxoid 2012-01-12 01:53:18