PyQt4中的Stacked Widget应用

来源:互联网 发布:农村淘宝服务站怎么绑 编辑:程序博客网 时间:2024/04/29 06:32

参考资料

PyQt4 tutorial :http://www.qaulau.com/books/PyQt4_Tutorial/index.html

PyQt4 Modules: http://pyqt.sourceforge.net/Docs/PyQt4/modules.html

例程:http://www.linuxidc.com/Linux/2012-06/63652p20.htm

主要功能

左边的list发生变化时,右边的Stacked Widget表现出不同的形式

代码

import sysfrom PyQt4.QtGui import *from PyQt4.QtCore import *QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))class Example(QDialog):    def __init__(self, parent=None):        super(Example, self).__init__(parent)        self.setWindowTitle("example")        listWidget = QListWidget(self)        listWidget.insertItem(0, "Button")        listWidget.insertItem(1, "Label")        listWidget.insertItem(2, "txt")        stack = QStackedWidget()        button = Button()        label = Label()        txt = Txt()        stack.addWidget(button)        stack.addWidget(label)        stack.addWidget(txt)        mainLayout = QHBoxLayout(self)        mainLayout.setMargin(5)  # 对话框边距设为5 Margin 边距  5px        mainLayout.setSpacing(5)  # 内部控件间距为5 Spacing间距  5px        mainLayout.addWidget(listWidget)        mainLayout.addWidget(stack, 0, Qt.AlignHCenter)        mainLayout.setStretchFactor(listWidget, 1)        mainLayout.setStretchFactor(stack, 3)  # 设定了list与stack比例为1:3。        self.connect(listWidget, SIGNAL('currentRowChanged(int)'), stack, SLOT('setCurrentIndex(int)'))class Button(QWidget):    def __init__(self, parent=None):        super(Button, self).__init__(parent)        button1 = QPushButton("button 1")        button2 = QPushButton("button 2")        button3 = QPushButton("button 3")        button4 = QPushButton("button 4")        button5 = QPushButton("button 5")        button6 = QPushButton("button 6")        button7 = QPushButton("button 7")        button8 = QPushButton("button 8")        button9 = QPushButton("button 9")        layout = QGridLayout(self)        layout.addWidget(button1, 0, 0)        layout.addWidget(button2, 0, 1)        layout.addWidget(button3, 0, 2)        layout.addWidget(button4, 1, 0)        layout.addWidget(button5, 1, 1)        layout.addWidget(button6, 1, 2)        layout.addWidget(button7, 2, 0)        layout.addWidget(button8, 2, 1)        layout.addWidget(button9, 2, 2)class Label(QWidget):    def __init__(self, parent=None):        super(Label, self).__init__(parent)        label1 = QLabel("label 1")        label2 = QLabel("label 2")        label3 = QLabel("label 3")        label4 = QLabel("label 4")        label5 = QLabel("label 5")        label6 = QLabel("label 6")        label7 = QLabel("label 7")        label8 = QLabel("label 8")        label9 = QLabel("label 9")        layout = QGridLayout(self)        layout.addWidget(label1, 0, 0)        layout.addWidget(label2, 0, 1)        layout.addWidget(label3, 0, 2)        layout.addWidget(label4, 1, 0)        layout.addWidget(label5, 1, 1)        layout.addWidget(label6, 1, 2)        layout.addWidget(label7, 2, 0)        layout.addWidget(label8, 2, 1)        layout.addWidget(label9, 2, 2)class Txt(QWidget):    def __init__(self, parent=None):        super(Txt, self).__init__(parent)        label1 = QLabel("txt 1")        label2 = QLabel("txt 2")        label3 = QLabel("txt 3")        txt1 = QLineEdit()        txt2 = QLineEdit()        txt3 = QLineEdit()        layout = QGridLayout(self)        layout.addWidget(label1, 0, 0)        layout.addWidget(txt1, 0, 1)        layout.addWidget(label2, 1, 0)        layout.addWidget(txt2, 1, 1)        layout.addWidget(label3, 2, 0)        layout.addWidget(txt3, 2, 1)app = QApplication(sys.argv)ex = Example()ex.show()sys.exit(app.exec_())
0 0