代码:
1 #coding: utf-8 2 from PyQt4.QtCore import * 3 from PyQt4.QtGui import * 4 import sys 5 6 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) 7 8 class StockDialog(QDialog): 9 def __init__(self, parent=None): 10 super(StockDialog, self).__init__(parent) 11 self.setWindowTitle(self.tr("堆栈窗口")) 12 13 listWidget = QListWidget() 14 listWidget.insertItem(0, self.tr("窗口1")) 15 listWidget.insertItem(1, self.tr("窗口2")) 16 listWidget.insertItem(2, self.tr("窗口3")) 17 label1 = QLabel(self.tr("这是窗口1!")) 18 label2 = QLabel(self.tr("这是窗口2!")) 19 label3 = QLabel(self.tr("这是窗口3!")) 20 #创建一个 QStackedWidget 堆栈窗 21 stack = QStackedWidget() 22 #调用 addWidget()方法把前面创建的 3 个标签控件依次插入堆栈窗中 23 stack.addWidget(label1) 24 stack.addWidget(label2) 25 stack.addWidget(label3) 26 #使用 QHBoxLayout 对整个对话框进行布局 27 mainLayout = QHBoxLayout(self) 28 mainLayout.setMargin(5) 29 mainLayout.setSpacing(5) 30 mainLayout.addWidget(listWidget) 31 mainLayout.addWidget(stack, 0, Qt.AlignHCenter) 32 mainLayout.setStretchFactor(listWidget, 1) 33 mainLayout.setStretchFactor(stack, 3) 34 self.connect(listWidget, SIGNAL("currentRowChanged(int)"), stack, SLOT("setCurrentIndex(int)")) 35 #连接 QListWidget 的 currentRowChanged()信号与堆栈窗的 setCurrentIndex()槽, 36 #现按选择显示窗体。 此处的堆栈窗体 index 按插入的顺序从 0 起依次排序, 与 QListWidget 37 #的条目排序相一致 38 app = QApplication(sys.argv) 39 main = StockDialog() 40 main.show() 41 app.exec_()