PyQt / PySide QMainWindow - переключение между представлениями - PullRequest
3 голосов
/ 06 августа 2011

Здравствуйте, эксперты PyQt / PySide,

Я новичок в разработке PyQt / PySide и приложений для настольных компьютеров (я веб-разработчик).

У меня вопрос о том, как выдолжен перемещаться между различными представлениями в приложении 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()

Заранее спасибо ...!

1 Ответ

4 голосов
/ 06 августа 2011

stackedwidget может сделать трюк

...