环境:
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_()