3
你好的PyQt/PySide專家,的PyQt/PySide的QMainWindow - 視圖之間切換
我是一個新手,都PyQt的/ PySide和桌面應用程序開發(我是一個Web開發人員)。
我有一個關於你應該如何在一個PyQt的/ PySide應用程序的不同視圖間導航的問題。
假設我的應用程序具有「TEST1」(默認)和「TEST2」視圖(即像網頁應用程序中的頁面),並且我想通過單擊相應的工具欄項目在它們之間切換。
我以爲我可以使用QMainWindow.setCentralWidget()來設置每次單擊工具欄按鈕時請求的視圖,但這是一種正常的方式來在PyQt/PySide中的不同視圖之間導航?
供您參考,我會發佈一個示例代碼來說明上面:
#!/usr/bin/env python
import sys
from PySide import QtCore
from PySide.QtCore import *
from PySide.QtGui import *
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
# toolbar action 1
self.test1_action = QAction(QIcon('icons/test1.png'), 'Test 1', self)
self.test1_action.triggered.connect(self.show_test1_view)
# toolbar action 2
self.test2_action = QAction(QIcon('icons/test2.png'), 'Test 2', self)
self.test2_action.triggered.connect(self.show_test2_view)
# create toolbar
self.toolbar = self.addToolBar('Actions')
self.toolbar.addAction(self.test1_action)
self.toolbar.addAction(self.test2_action)
# default view is test1, so call the method to set the central widget to "test1" view.
self.show_test1_view()
# switch to "test1" view - just a simple label here.
def show_test1_view(self):
self.test1_view = QLabel('TEST1 VIEW')
self.setCentralWidget(self.test1_view)
# switch to "test2" view - just a simple label here.
def show_test2_view(self):
self.test2_view = QLabel('TEST2 VIEW')
self.setCentralWidget(self.test2_view)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
sys.exit()
預先感謝您...!
您好,非常感謝您指出!我已經看了一下,它確實對我的目的看起來不錯。但是對於像我這樣的應用使用StackedWidget事實上的標準?你通常會在像我這樣的情況下使用什麼?謝謝! – Sacki
@Sacki:我使用StackedWidget,我不知道這是否是一個任何形式的「標準」,但它必須存在是有原因的。我認爲,它存在的理由是在需要的時候使用... :) – dugres
您好,感謝您的回覆,我很抱歉,我花了很長要回你。我一定會試一試。再次感謝! – Sacki