入门 PyQt6 看过来(案例)14~ 分组

news2024/9/9 0:32:37

本文分享一个分组框功能,采用pyqt6里的QGroupBox​控件,效果如下:性别和专业分开为两个分组框内:

1 功能实现思路

ui页面布局设计

性别和专业要设计成两个分组框:

逻辑实现

引入信号和槽函数来实现点击单选按钮实现信号的触发,在控制台输出对应的内容。

2 UI代码部分

		#分别创建两个性别单选按钮
        self.rbNan=QRadioButton('男',self)
        self.rbNv=QRadioButton('女',self)
		#专业创建四个单选按钮
		self.rbJsj=QRadioButton('计算机',self)
        self.rbRjgc=QRadioButton('软件工程',self)
        self.rbTxgc=QRadioButton('通信工程',self)
        self.rbRgzn=QRadioButton('人工智能',self)

接下来把分别把性别和专业放到水平布局控件里:

		#创建两个内水平布局、1个外垂直布局
        self.hLayout1=QHBoxLayout()
        self.hLayout2=QHBoxLayout()
	
		#两个性别单选按钮加入内水平布局 1
        self.hLayout1.addWidget(self.rbNan)
        self.hLayout1.addWidget(self.rbNv)

        #4个专业选项按钮加入内水平布局 2
        self.hLayout2.addWidget(self.rbJsj)
        self.hLayout2.addWidget(self.rbRjgc)
        self.hLayout2.addWidget(self.rbTxgc)
        self.hLayout2.addWidget(self.rbRgzn)

之后创建两个分组框,分别对应性别和专业:

		#创建性别和专业单选按钮组
        self.gBox1=QGroupBox('性别',self)
        self.gBox2=QGroupBox('专业',self)

到这里,页面布局已经设计好了,后面开始实现功能。

  	#性别信号抽发点
 	self.rbNv.toggled.connect(self.rbNxxFunc)
	#对应的槽函数	
	def rbNxxFunc(self):
        if self.rbNan.isChecked():
            print("男")
        else:
            print("女")
	#将专业列表项中每一个单选按钮关联它们共同的槽函数rbListFunc
    self.list=[self.rbJsj,self.rbRjgc,self.rbTxgc,self.rbRgzn]
    [rb.clicked.connect(self.rbListFunc) for rb in self.list]
	#对应的槽函数
	def rbListFunc(self):
        for rb in self.list:
            if rb.isChecked():
                print(rb.text())

到此,基本上所有的功能就实现了。

3 完整代码

# -*- coding:utf-8 -*-
"""
------------------------------------------------
File Name: 分组框.py
Description:
Author: lzq
date:2024-07-28 16:25
------------------------------------------------
"""
import sys
from PyQt6.QtWidgets import QDialog, QPushButton, QVBoxLayout, QApplication, QWidget, QRadioButton, QHBoxLayout, \
    QGroupBox


class MyWidget(QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.setWindowTitle("分组框")

        self.rbJsj=QRadioButton('计算机',self)
        self.rbRjgc=QRadioButton('软件工程',self)
        self.rbTxgc=QRadioButton('通信工程',self)
        self.rbRgzn=QRadioButton('人工智能',self)

        #将列表项中每一个单选按钮关联它们共同的槽函数rbListFunc
        self.list=[self.rbJsj,self.rbRjgc,self.rbTxgc,self.rbRgzn]
        [rb.clicked.connect(self.rbListFunc) for rb in self.list]

        #分别创建两个性别单选按钮
        self.rbNan=QRadioButton('男',self)
        self.rbNv=QRadioButton('女',self)
        self.rbNv.toggled.connect(self.rbNxxFunc)
        #女单选按钮关联槽函数 rbNxxFunc

        #创建两个内水平布局、1个外垂直布局
        self.hLayout1=QHBoxLayout()
        self.hLayout2=QHBoxLayout()
        self.vLayout =QVBoxLayout()
        self.layout_init()

    def layout_init(self):
        #两个性别单选按钮加入内水平布局 1
        self.hLayout1.addWidget(self.rbNan)
        self.hLayout1.addWidget(self.rbNv)

        #4个专业选项按钮加入内水平布局 2
        self.hLayout2.addWidget(self.rbJsj)
        self.hLayout2.addWidget(self.rbRjgc)
        self.hLayout2.addWidget(self.rbTxgc)
        self.hLayout2.addWidget(self.rbRgzn)
        #创建性别和专业单选按钮组

        self.gBox1=QGroupBox('性别',self)
        self.gBox2=QGroupBox('专业',self)

        self.gBox1.setLayout(self.hLayout1)
        self.gBox2.setLayout(self.hLayout2)

        self.vLayout.addWidget(self.gBox1)
        self.vLayout.addWidget(self.gBox2)
        self.rbNv.setChecked(True)
        self.setLayout(self.vLayout)

    def rbListFunc(self):
        for rb in self.list:
            if rb.isChecked():
                print(rb.text())

    def rbNxxFunc(self):
        if self.rbNan.isChecked():
            print("男")
        else:
            print("女")

if __name__=='__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec())

自己可以尝试一下!很好玩的。


本文到此结束,有本事你就别点赞,别关注我。路老师一生清贫,上有老下有小,让我一个人默默的付出吧!

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

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

相关文章

Cybersecurity ASPICE实施策略-基于ISO/SAE 21434-亚远景科技

近几年,随着软件定义汽车和汽车的智能化和网联化,使得汽车融合了现代通信与网络通信技术,实现了车与人、车与车、车与道路、车与云端等智能信息交互和共享,也让车具备了环境感知、协同控制、智能决策等功能;与此同时&a…

构建可定制的表情选择器组件

你好呀,我是小邹。 概述 在当今的交互式Web应用中,表情符号(Emoji)已成为一种流行的沟通方式。为了提升用户体验并简化开发流程,本教程将引导您如何构建一个可高度定制的表情选择器组件。此组件将允许用户在Web表单中…

力扣621.任务调度器

力扣621.任务调度器 桶思想当桶放不满时 答案为桶面积 maxcount(最后一行) (max - 1)(n1)当桶放的满时 答案为任务总数 tasks.size()最终两者取大即可 class Solution {public:int leastInterval(vector<char>& tasks, int n) {int len tasks.size();vector<…

QT--聊天室

一、设计要求 用QT做一个聊天室&#xff0c; 制作一个服务器和客户端。可以进行注册、登录&#xff0c; 登陆成功后可以使用昵称进行发送、接收消息。 能根据昵称、聊天内容查询历史记录&#xff0c;也可以查询全部聊天记录。 。 二、客户端三级ui界面 三、项目代码 //在…

测试用例:确保软件质量的基石

大家好&#xff0c;我是一名测试开发工程师&#xff0c;已经开源一套【自动化测试框架】和【测试管理平台】&#xff0c;欢迎大家联系我&#xff0c;一起【分享测试知识&#xff0c;交流测试技术】 在当今这个数字化时代&#xff0c;软件已经成为人们日常生活、工作和学习中不可…

Hive3:Centos7环境部署Hive服务

一、安装说明 1、Hadoop集群情况 3台机器&#xff1a;4G2C、2G2C、2G2C 安装教程&#xff1a;Centos7环境安装Hadoop集群 2、安装MySQL&#xff0c;用于存储Hive的元数据 在102机器上安装MySQL 安装MySQL使用服务器的root账号 3、最后安装Hive 安装hive过程使用服务器的atgu…

fatal: Could not read from remote repository. 解决方法

问题描述&#xff1a; Git : fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists。 解决方法&#xff1a; 当在网上尝试大量方法仍然失败的时候&#xff0c;不妨试试这个方法。 在 github 上&…

ROUND() Function in SQL(四舍五入)

ROUND() Function in SQL ROUND() 函数用于将数值四舍五入到指定的小数位数或者整数位数。 不同的数据库系统可能会有一些细微的语法差异&#xff0c;但基本功能都是一致的。 1. 基本语法 ROUND(number, decimal_places)number: 要进行四舍五入的数值。decimal_places: 可选参…

2024年7月30日 十二生肖 今日运势

小运播报&#xff1a;2024年7月30日&#xff0c;星期二&#xff0c;农历六月廿五 &#xff08;甲辰年辛未月乙未日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;兔、马、猴 需要注意&#xff1a;狗、鼠、牛 喜神方位&#xff1a;西北方 财神方位&#xff1a;…

基于SpringBoot+Vue的游戏攻略分享平台(带1w+文档)

基于SpringBootVue的游戏攻略分享平台(带1w文档) 本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库&#xff0c;而java技术&#xff0c;B/S架构则保证了较高的平台适应性。本文主要介绍了本系统的开发背景&#xff0c;所要完成的功能和开发的过程&#xff0c;主要说…

大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

零基础入门转录组数据分析——加权基因共表达网络分析(WGCNA,Weighted correlation network analysis)

零基础入门转录组数据分析——加权基因共表达网络分析&#xff08;WGCNA&#xff0c;Weighted correlation network analysis&#xff09; 目录 零基础入门转录组数据分析——加权基因共表达网络分析&#xff08;WGCNA&#xff0c;Weighted correlation network analysis&#…

c语言代码运行不成功,如何解决?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

GEE数据:Sentinel-2数据更新新增两个云和雪波段(MSK_CLDPRB和MSK_SNWPRB)

目录 简介 数据时间 数据提供者 Collection Snippet 波段名称 Class Table: SCL 影像属性 代码 结果 简介 2022年1月25日之后&#xff0c;PROCESSING_BASELINE为“04.00”或以上的Sentinel-2场景的DN&#xff08;值&#xff09;范围移动了1000。HARMONIZED集合将新场…

【C++】std::shared_ptr智能指针详解和示例

在C中&#xff0c;智能指针是一种用于自动管理动态分配内存的机制&#xff0c;旨在减少内存泄漏和野指针的风险。std::shared_ptr 是C标准库提供的几种智能指针之一&#xff0c;它通过共享所有权的机制来管理动态分配的对象。本文将详细解析 std::shared_ptr 的工作原理、特性&…

【电路笔记】-共源JFET放大器

共源JFET放大器 文章目录 共源JFET放大器1、概述2、共源JFET放大器3、JFET放大器电流和功率增益共源JFET放大器使用结场效应晶体管作为其主要有源器件,提供高输入阻抗特性。 1、概述 普通源JFET放大器与共射极BJT放大器相比有一个重要优点,即FET具有极高的输入阻抗,再加上低…

工业三防平板,高效能与轻便性的结合

在当今数字化、智能化的工业时代&#xff0c;工业三防平板作为一种创新的设备&#xff0c;正以其独特的优势在各个领域发挥着重要作用。它不仅具备高效能的处理能力&#xff0c;还拥有出色的轻便性&#xff0c;为工业生产和管理带来了前所未有的便利。 一、高效能的核心动力 工…

2024年中职云计算实验室建设及云计算实训平台整体解决方案

随着信息技术的飞速发展&#xff0c;云计算作为新一代信息技术的核心&#xff0c;正逐步渗透到各行各业&#xff0c;成为推动数字化转型的重要力量。为了适应这一趋势&#xff0c;中职教育作为技能型人才培养的重要阵地&#xff0c;亟需加强云计算实验室建设与云计算实训平台的…

web,apache,nginx

web基本概念和常识 Web:为用户提供的一种在互联网上浏览信息的服务&#xff0c;Web 服务 是动态的、可交 互的、跨平台的和图形化的。 Web 服务为用户提供各种互联网服务&#xff0c;这些服务包括信息浏览服务&#xff0c;以及各种交互式服务&#xff0c;包括聊天、购物、学习…

泰迪智能科技大数据实验室——陕西省高校合作成功案例

近年来&#xff0c;陕西省紧跟国家大数据发展战略&#xff0c;积极推进大数据产业发展。在政策扶持、产业布局、技术创新等方面取得显著成效。泰迪智能科技大数据实验室立足陕西&#xff0c;携手西安邮电大学、西安财经大学、陕西科技大学镐京学院、宝鸡文理学院、渭南师范学院…