我最近纔開始編程和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