Python PyQt5 多Tab demo

news2025/1/20 1:08:47

参考:
https://cloud.tencent.com/developer/news/388937

importsys

fromPyQt5.QtWidgetsimportQVBoxLayout,QWidget,QFormLayout,QHBoxLayout,QLineEdit,QRadioButton,QCheckBox,QLabel,QGroupBox,QApplication,QTabWidget

classTabDemo(QTabWidget):

def__init__(self,parent=None):

super(TabDemo,self).__init__(parent)

self.resize(500,300)

self.tab1 = QWidget()

self.tab2 = QWidget()

self.tab3 = QWidget()

self.tab4 = QWidget()

self.tab5 = QWidget()

self.addTab(self.tab1,"Tab 1")

self.addTab(self.tab2,"Tab 2")

self.addTab(self.tab3,"Tab 3")

self.addTab(self.tab4,"Tab 4")

self.addTab(self.tab5,"Tab 5")

self.tab1UI()

self.tab2UI()

self.tab3UI()

self.tab4UI()

self.tab5UI()

self.setWindowTitle("Tab Demo")

deftab1UI(self):

layout = QFormLayout()

layout.addRow("姓名",QLineEdit())

layout.addRow("地址",QLineEdit())

self.setTabText(,"联系方式")#也可以在addTab时进行修改

self.tab1.setLayout(layout)

deftab2UI(self):

layout = QFormLayout()

sex = QHBoxLayout()

sex.addWidget(QRadioButton("男"))

sex.addWidget(QRadioButton("女"))

lb = QLabel()

lb.setText("性别")

layout.addRow(lb,sex)

layout.addRow("生日",QLineEdit())

self.setTabText(1,"个人详细信息")

self.tab2.setLayout(layout)

deftab3UI(self):

layout = QHBoxLayout()

lb = QLabel()

lb.setText("科目")

layout.addWidget(lb)

layout.addWidget(QCheckBox("物理"))

layout.addWidget(QCheckBox("高数"))

layout.addWidget(QCheckBox("体育"))

layout.addWidget(QCheckBox("英语"))

self.setTabText(2,"教育程度")

self.tab3.setLayout(layout)

deftab4UI(self):

layout = QHBoxLayout()

mainBox = QGroupBox("汇总")

self.setTabText(3,"信息汇总")

layout1 = QVBoxLayout()

lb = QLabel()

lb.setText("科目")

layout1.addWidget(lb)

layout1.addWidget(QCheckBox("计算机"))

layout1.addWidget(QCheckBox("python"))

layout1.addWidget(QCheckBox("C"))

layout1.addWidget(QCheckBox("Java"))

layout1.addWidget(QCheckBox("ruby"))

mainBox.setLayout(layout1)

layout.addWidget(mainBox)

self.tab4.setLayout(layout)

deftab5UI(self):

layout = QHBoxLayout()

mainBox = QGroupBox("汇总")

self.setTabText(4,"信息汇总1")

layout1 = QVBoxLayout()

lb = QLabel()

lb.setText("科目")

layout1.addWidget(lb)

layout1.addWidget(QCheckBox("计算机"))

layout1.addWidget(QCheckBox("python"))

layout1.addWidget(QCheckBox("C"))

layout1.addWidget(QCheckBox("Java"))

layout1.addWidget(QCheckBox("ruby"))

mainBox.setLayout(layout1)

layout.addWidget(mainBox)

self.tab5.setLayout(layout)

if__name__ =='__main__':

app = QApplication(sys.argv)

demo = TabDemo()

demo.show()

sys.exit(app.exec_())

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1496126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++内存泄漏检测

C进阶专栏:http://t.csdnimg.cn/aTncz 相关系列文章 C技术要点总结, 面试必备, 收藏起来慢慢看 C惯用法之RAII思想: 资源管理 C智能指针的自定义销毁器(销毁策略) 目录 1.内存泄漏概述 1.1.内存泄漏产生原因 1.2 内存泄漏导致的后果 1.3 内存泄漏解决思路 2.宏…

Linux——线程(2)

在上一篇博客中我介绍了Linux中的线程是什么样的,就如同进程可以通过 fork创建,可以被终止,可以退出一样,线程也可以被我们用户控制,这 篇博客我会介绍线程的控制,并且基于线程的控制所产生的一些问题进行 …

安装系统后,如何单个盘空间扩展多个盘空间?

1、计算机-管理-存储-磁盘空间 2、压缩C盘符,分出多余空间 3、将多余空间扩展,然后修改盘符名称

为什么会不断出现低价窜货链接

品牌在做控价的过程中,会进入一个怪圈,就是不管如何治理,低价、乱价、窜货链接都在不断出现,甚至有些低价链接会占据电商首页的位置,其实这些在一定程度上讲是正常的,品牌在不断发展,链接也是动…

Cyber RT 开发工具

在Cyber RT中还提供了一些工具,这些工具可以拓展Cyber RT功能、提高开发调试效率,本章主要介绍这些工具的使用。 本章内容: 1.cyber record工具的应用; 2.常用命令工具的使用; 学习收获: 1.可以通过cyber record将发布的话题消息…

基础50刷题之一(交替合并字符串)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、题目二、力扣官方题解(双指针)三、文心一言解释总结 前言 刚上研一,有人劝我好好学C,当时用的不多就没学&a…

Javascript进阶课程——大纲

JavaScript进阶教程_哔哩哔哩_bilibili

Windows下 OracleXE_21 数据库的下载与安装

Oracle 数据库的下载与安装 数据库安装包下载数据库安装访问数据库进行测试Navicat连接数据库 1. 数据库安装包的下载 1.1 下载地址 Oracle Database Express Edition | Oracle 中国 1.2 点击“下载 Oracle Database XE”按钮,进去到下载页面(选择对…

图论练习5

Going Home Here 解题思路 模板 二分图最优匹配,前提是有完美匹配(即存在一一配对)左右集合分别有顶标,当时,为有效边,即选中初始对于左集合每个点,选择其连边中最优的,然后对于每…

uniapp 解决请求出现 /sockjs-node/info?t=问题

1. uniapp请求出现 /sockjs-node/info?t问题 1.1. 问题 uniapp项目老是出现 http://192.168.2.106:8080/sockjs-node/info?t1709704280949 1.1. sockjs-node介绍 sockjs-node 是一个JavaScript库,提供跨浏览器JavaScript的API,创建了一个低延迟、全…

spring 注解缓存查询方法使用

spring-boot项目启动类上加注解: EnableCaching 查询方法注解: Cacheable

基于springboot的精准扶贫管理系统论文

精准扶贫管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了精准扶贫管理系统的开发全过程。通过分析精准扶贫管理系统管理的不足,创建了一个计算机管理精准扶贫管理系统的方案。文章介绍了精…

【Java JVM】Class 文件的加载

Java 虚拟机把描述类的数据从 Class 文件加载到内存, 并对数据进行校验, 转换解析和初始化, 最终形成可以被虚拟机直接使用的 Java 类型, 这个过程被称作虚拟机的类加载机制。 与那些在编译时需要进行连接的语言不同, 在 Java 语言里面, 类的加载, 连接和初始化过程都是在程序…

SpringBoot整合【RocketMQ】

目录 1.POM文件添加依赖及yml配置 2.RocketmqUtil 3.生产者&#xff08;异步发送示例&#xff09; 4.消费者 5.测试 1.POM文件添加依赖及yml配置 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter&l…

html--3D爱心

文章目录 代码效果 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>爱心</title><style type"text/css">*{margin: 0px;border: 0px;}body{overflow: hidden;background-…

简单整理vue-router,路由知识

1.项目中引入 1.1 安装注册 1.2 封装抽离 在main.js中 书写,会造成单个js文件过于臃肿的情况,需要将路由配置部分抽离出来,在src下新建router文件夹,新建index.js文件 import Vue from vue import VueRouter from vue-router import HomeView from ../views/HomeView.vue im…

Wireshark——获取指定协议的数据包

1、问题 使用Wireshark捕获了大量的数据包&#xff0c;但是只想要指定协议的数据包。 2、方法 例如&#xff0c;只想要Modbus/TCP协议的数据包。 在应用显示过滤器中输入协议的名称&#xff08;小写&#xff09;&#xff0c;回车。 选择文件&#xff0c;导出特定分组。 将所…

Matlab 机器人工具箱 RobotArm类

文章目录 1 RobotArm1.1 方法1.2 注意2 RobotArm.RobotArm3 RobotArm.cmove4 其他官网:Robotics Toolbox - Peter Corke 1 RobotArm 串联机械臂类 1.1 方法 方法描述plot显示机器人的图形表示teach驱动物理和图形机器人mirror使用机器人作为从机来驱动图形</

影响哈默纳科Harmonic减速机使用寿命的5大因素

哈默纳科HarmonicDrive减速机以其轻量、小型、传动效率高、减速范围广、精度高等特点&#xff0c;被广泛应用于各种传动系统中。然而&#xff0c;尽管哈默纳科Harmonic减速机具有诸多优势&#xff0c;但其使用寿命仍可能受到多种因素的影响。 首先&#xff0c;环境因素对哈默纳…

【ESP32 IDF快速入门】点亮第一个LED灯与流水灯

文章目录 前言一、有哪些工作模式&#xff1f;1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 二、GPIO操作函数2.1 GPIO 汇总2.2 GPIO操作函数gpio_config配置引脚reset 引脚函数设置引脚电平选中对应引脚设置引脚的方向 2.3 点亮第一个灯 三、流水灯总结 前言 ESP32…