2011-08-06 6 views
3

안녕하세요 PyQt는/PySide 전문가,PyQt는/PySide QMainWindow -보기 사이

나는 초보자에 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() 

가 사전에 감사합니다 ...!

답변

4

stackedwidget 트릭을 할 수도 있습니다.

+0

안녕하세요, 지적 해 주셔서 감사합니다! 나는 그것을 보았다. 그리고 그것은 나의 목적에 대해 좋게 보인다. 하지만 StackedWidget 사실상의 표준을 사용하여 내 응용 프로그램에 사용하고 있습니까? 내 상황과 같은 상황에서 보통 무엇을 사용 하시겠습니까? 감사! – Sacki

+0

@Sacki : StackedWidget을 사용합니다. 어떤 종류의 "표준"인지는 모르겠지만 이유가 있어야합니다. 그리고 나는 그것이 존재하는 이유가 필요할 때 사용되는 것이라고 생각합니다. :) – dugres

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 유감스럽게 생각합니다. 나는 그것을 확실히 시도 할 것이다. 다시 한 번 감사드립니다! – Sacki