PySide的QStackedWidget例子

环境:

python 2.7.8

pyside 1.2.2



# coding: utf-8
#from PySide.QtCore import *
from PySide.QtGui import *
import sys


class Mainwindow(QDialog):
    def __init__(self):
        super(Mainwindow, self).__init__()
        self.ui()

    def ui(self):
        #widget 1
        color = QLabel(u'颜色')
        txt_color = QLineEdit()
        seats = QLabel(u'座位')
        txt_seats = QSpinBox()

        grid_1 = QGridLayout()
        grid_1.addWidget(color, 0, 0)
        grid_1.addWidget(txt_color, 0, 1)
        grid_1.addWidget(seats, 1, 0)
        grid_1.addWidget(txt_seats, 1, 1)

        widget_1 = QWidget()
        widget_1.setLayout(grid_1)

        #widget 2
        weight = QLabel(u'重量')
        txt_weight = QSpinBox()
        volume = QLabel(u'容积')
        txt_volume = QSpinBox()

        grid_2 = QGridLayout()
        grid_2.addWidget(weight)
        grid_2.addWidget(txt_weight)
        grid_2.addWidget(volume)
        grid_2.addWidget(txt_volume)

        widget_2 = QWidget()
        widget_2.setLayout(grid_2)

        #加到 stackwidget
        self.stack = QStackedWidget()
        self.stack.addWidget(widget_1)
        self.stack.addWidget(widget_2)

        #整个窗口
        type = QLabel(u'车辆类型')
        self.txt_type = QComboBox()
        self.txt_type.addItem('car')
        self.txt_type.addItem('truck')
        #self.txt_type.setEditable(True)
        top = QHBoxLayout()
        top.addWidget(type)
        top.addWidget(self.txt_type)

        max_load = QLabel(u'最大载重')
        txt_max_load = QLineEdit()
        bottom = QHBoxLayout()
        bottom.addWidget(max_load)
        bottom.addWidget(txt_max_load)

        #按钮组
        buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)

        box = QVBoxLayout()
        box.addLayout(top)
        #加入stackwidget
        box.addWidget(self.stack)
        box.addLayout(bottom)
        box.addWidget(buttons)

        self.setLayout(box)

        #连接信号
        #stack.currentChanged.connect(self.setStack)
        #使用[str]指定信号发出的数据类型
        self.txt_type.currentIndexChanged[str].connect(self.setStack)
        buttons.rejected.connect(self.reject)

    def setStack(self, text):
        if text == 'car':
            self.stack.setCurrentIndex(0)
        else:
            self.stack.setCurrentIndex(1)


app = QApplication(sys.argv)
m = Mainwindow()
m.show()
app.exec_()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

容沁风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值