您的位置:首页 > 编程语言 > Qt开发

PyQt4中的Stacked Widget应用

2016-07-07 19:39 393 查看

参考资料

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 sys
from 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_())
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: