QStackedWidget 堆栈窗口控件使用 的案例
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QMenu, QVBoxLayout, QMainWindow, \
QTreeWidget, QTreeWidgetItem, QHBoxLayout, QPushButton, QInputDialog, QDirModel, QTreeView, QTabWidget, QFormLayout, \
QLineEdit, QRadioButton, QLabel, QCheckBox, QListWidget, QStackedWidget
'''
QStackedWidget 堆栈窗口控件使用 的案例
'''
class StackedDemo(QTabWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 设置定位和左上角坐标
self.setGeometry(300, 300, 360, 360)
# 设置窗口标题
self.setWindowTitle('QStackedWidget 堆栈窗口控件使用 的演示')
# 设置窗口图标
# self.setWindowIcon(QIcon('../web.ico'))
# 设置 stack 名称
self.list = QListWidget()
self.list.insertItem(0,'联系方式')
self.list.insertItem(1,'个人信息')
self.list.insertItem(2,'教育程度')
# 创建用于显示控件的窗口
self.stack1 = QWidget()
self.stack2 = QWidget()
self.stack3 = QWidget()
self.tab1UI()
self.tab2UI()
self.tab3UI()
self.stack = QStackedWidget()
self.stack.addWidget(self.stack1)
self.stack.addWidget(self.stack2)
self.stack.addWidget(self.stack3)
hbox = QHBoxLayout()
hbox.addWidget(self.list)
hbox.addWidget(self.stack)
self.setLayout(hbox)
self.list.currentRowChanged.connect(self.display)
def tab1UI(self):
layout = QFormLayout()
layout.addRow('姓名:',QLineEdit())
layout.addRow('地址:',QLineEdit())
self.stack1.setLayout(layout)
def tab2UI(self):
layout = QFormLayout()
sex = QHBoxLayout()
sex.addWidget(QRadioButton('男'))
sex.addWidget(QRadioButton('女'))
layout.addRow(QLabel('性别:'),sex)
layout.addRow('生日:',QLineEdit())
self.stack2.setLayout(layout)
def tab3UI(self):
layout = QHBoxLayout()
layout.addWidget(QLabel('科目'))
layout.addWidget(QCheckBox('物理'))
layout.addWidget(QCheckBox('数学'))
self.stack3.setLayout(layout)
def display(self,index):
self.stack.setCurrentIndex(index)
if __name__ == '__main__':
app = QApplication(sys.argv)
# 设置应用图标
app.setWindowIcon(QIcon('../web.ico'))
w = StackedDemo()
w.show()
sys.exit(app.exec_())