PyQt4中的Stacked Widget应用
2016-07-07 19:39
393 查看
参考资料
PyQt4 tutorial :http://www.qaulau.com/books/PyQt4_Tutorial/index.htmlPyQt4 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_())
相关文章推荐
- Qt (6) -- Qt5.5.1实现通用串口程序
- qt中的各种workaround
- 使用QT Creator 关联C/C++开源代码库
- win7_64bits下QT使用openCV库(2)
- Qt 信号和槽
- Qt总结
- QT4 交叉编译
- Qt5_qtconfig
- QT+SQLite3 基础
- Qt5_qt.conf
- Qt5_加载DLL
- Qt学习之路(32): 一个简易画板的实现(Graphics View)
- Qt学习之路(31): 一个简易画板的实现(QWidget)
- Qt5_pro_01
- Qt解析Excel文件并将数据插入远程数据库MySQL
- Qt窗口嵌入
- 【qt】动画按钮---QPropertyAnimation的使用
- Qt之动画框架
- Qt之动画框架
- Qt之动画框架