堆叠窗口QStackedWidget
经常将QStackedWidget和QListWidget或者QListView搭配使用
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QStackedWidget, QLabel, QLineEdit, QDateEdit, \
QComboBox, QTextEdit, QListWidget, QGridLayout, QHBoxLayout class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.stack1 = QWidget() #实例化一个窗口
self.stack2 = QWidget()
self.stack3 = QTextEdit() self.stack1_init()
self.stack2_init() self.stacked_widget = QStackedWidget(self) # 创建一个堆叠窗口【虚拟窗口】
self.stacked_widget.addWidget(self.stack1) #给堆叠窗口添加子窗口或子控件
self.stacked_widget.addWidget(self.stack2)
self.stacked_widget.addWidget(self.stack3)
self.stacked_widget.currentChanged.connect(lambda: print(self.stacked_widget.currentIndex()))
#堆叠窗口发生变化时,都会触发信号
#self.stacked_widget.currentIndex()返回堆叠窗口序列号 self.list_widget = QListWidget(self) #创建列表控件--用来放标签项
self.list_widget.addItem('Basic Info') #在列表控件中添加标签项。参数:标签显示文本
self.list_widget.addItem('Contact Info')
self.list_widget.addItem('More Info')
self.list_widget.clicked.connect(self.change_func) #单击列表控件时触发信号 self.h_layout = QHBoxLayout()
self.h_layout.addWidget(self.list_widget)
self.h_layout.addWidget(self.stacked_widget) self.setLayout(self.h_layout) def stack1_init(self):
name_label = QLabel('姓名:', self.stack1)
gender_label = QLabel('性别:', self.stack1)
bd_label = QLabel('出生日期:', self.stack1) name_line = QLineEdit(self.stack1)
items = ['请选择性别', '男', '女']
gender_combo = QComboBox(self.stack1)
gender_combo.addItems(items)
bd_dateedit = QDateEdit(self.stack1) g_layout = QGridLayout()
g_layout.addWidget(name_label, 0, 0, 1, 1)
g_layout.addWidget(name_line, 0, 1, 1, 1)
g_layout.addWidget(gender_label, 2, 0, 1, 1)
g_layout.addWidget(gender_combo, 2, 1, 1, 1)
g_layout.addWidget(bd_label, 3, 0, 1, 1)
g_layout.addWidget(bd_dateedit, 3, 1, 1, 1) self.stack1.setLayout(g_layout) def stack2_init(self):
tel_label = QLabel('Tel:', self.stack2)
mobile_label = QLabel('Mobile:', self.stack2)
add_label = QLabel('Address:', self.stack2) tel_line = QLineEdit(self.stack2)
mobile_line = QLineEdit(self.stack2)
add_line = QLineEdit(self.stack2) g_layout = QGridLayout()
g_layout.addWidget(tel_label, 0, 0, 1, 1)
g_layout.addWidget(tel_line, 0, 1, 1, 1)
g_layout.addWidget(mobile_label, 1, 0, 1, 1)
g_layout.addWidget(mobile_line, 1, 1, 1, 1)
g_layout.addWidget(add_label, 2, 0, 1, 1)
g_layout.addWidget(add_line, 2, 1, 1, 1) self.stack2.setLayout(g_layout) def change_func(self):
self.stacked_widget.setCurrentIndex(self.list_widget.currentIndex().row())
#设置堆叠窗口显示指定索引的窗口
#self.list_widget.currentIndex().row() 返回当前列表选中项的索引号 if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
样式:

堆叠窗口QStackedWidget的更多相关文章
- 第15.35节 PyQt编程实战:结合QDial实现的QStackedWidget堆叠窗口程序例子
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.案例说明 本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStack ...
- 第15.34节 PyQt(Python+Qt)入门学习:containers容器类部件QStackedWidget堆叠窗口部件详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWi ...
- 第二十八章、containers容器类部件QStackedWidget堆叠窗口部件详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWi ...
- PyQt(Python+Qt)学习随笔:containers容器类部件QStackedWidget堆叠窗口属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.堆叠窗口简介 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStack ...
- Qt创建堆叠窗口
1.QT创建堆叠窗口使用类,但是使用它时主窗口不能是MainWindow,否则会出现布局错误,本例中使用基类为QDialog QStackedWidget 2.可以配合列表框QListWidget和Q ...
- 10、堆叠窗口StackedWidget
新建项目,基类选择QMainWindow,勾选ui 堆叠窗口有三个page,每个page有个label button处,快捷菜单,转到槽,添加代码 void MainWindow::on_push ...
- PyQt开发案例:结合QDial实现的QStackedWidget堆叠窗口程序例子及完整代码
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.案例说明 本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStack ...
- pyqt5的使用目录
pyqt5的安装 我的第一个例子 标签控件QLabel的使用 按钮QPushButton 信号与槽 pyqt5模块介绍 pycharm活动模板 QObject 定时器 QWidget类-坐标系 ...
- PyQt(Python+Qt)学习随笔:containers容器类部件QStackedWidget重要方法介绍
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWidget. ...
随机推荐
- 微信小程序开发3之保存数据及页面跳转
第一 保存本地数据 1.异步保存本地数据 wx.setStorage({ key:keyStr, data:dataStr, success: function(e){}, fail: functi ...
- 在使用ADOQuery删除数据时的处理 [问题点数:100分,结帖人isdxsc]
在使用ADOQuery删除数据时的,希望在他的事件BeforeDelete进行一些判断,符合要求的进行删除,不符合要求的终止这个删除行为,请问应该用什么语句呢?还有个比较奇怪的现象也一起请教:DBGr ...
- Java之枚举类范例
代码如下: package catf.component.http.model; /** * @Auther:gongxingrui * @Date:2018-04-17 * @Description ...
- Jquery_如何扩展方法
jQuery 别名 $ 一. 类级别扩展方法(比如$.ajax(...)) 1> 单个全局方法 $.testExtend = function (){ console.log("单个 ...
- 设计模式【PHP案例】
内容来源: 波客 菜鸟教程 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对 ...
- 因为代理原因导致的NotSerializableException
错误信息: NotSerializableException Failed to serialize object Proxy 报这个错,一开始就往没有序列化这一块想,可是报错点是: excelT ...
- day9 集合基础命令
集合的创建 s = set("hello") print(s) s = set({","alex","sb"}) print(s) ...
- 【POI每日题解 #5】 DWU-Double-row
题目链接 [POI2005]DWU-Double-row wwwww 之前写了半小时 一卡机 没啦QAQ 简单说一下吧 [吐血ing 这道题长得好二分图啊 所以本能地连边 一种是A边 连可交换的数对 ...
- Linux 系统免密码登陆远程服务器
在当前Linux生成公钥私钥ssh-keygen公钥私钥存放路径为:~/root/.ssh/id_rsa id_rsa.pub 登陆被远程主机,进入目录~/root/.ssh/是否存在authoriz ...
- BZOJ 4556: [Tjoi2016&Heoi2016]字符串(后缀数组 + 二分答案 + 主席树 + ST表 or 后缀数组 + 暴力)
题意 一个长为 \(n\) 的字符串 \(s\),和 \(m\) 个询问.每次询问有 \(4\) 个参数分别为 \(a,b,c,d\). 要你告诉它 \(s[a...b]\) 中的所有子串 和 \(s ...