【PyQt学习篇 · ⑪】:QPushButton和QCommandLinkButton的使用

文章目录

  • 构造函数
  • 菜单设置
  • 扁平化
  • 默认处理
  • 右键菜单
  • QCommandLinkButton的使用

构造函数

QPushButton的构造函数如下:

    """QPushButton(parent: Optional[QWidget] = None)QPushButton(text: Optional[str], parent: Optional[QWidget] = None)QPushButton(icon: QIcon, text: Optional[str], parent: Optional[QWidget] = None)"""

示例代码:

from PyQt5.Qt import *
from PyQt5.QtGui import QIcon
import sysapp = QApplication(sys.argv)window = QWidget()
window.resize(300, 300)btu = QPushButton(QIcon('mouse.png'), '按钮', window)     # 使用最全的构造函数btu.setIconSize(QSize(50, 50))
btu.resize(80, 50)window.show()
sys.exit(app.exec_())

运行结果:

在这里插入图片描述

菜单设置

在 PyQt5 中,QPushButton 类提供了设置菜单的功能。以下是 QPushButton 菜单相关的 API 以及 QMenu 相关的 API 的说明:

  1. setMenu(QMenu)
    • setMenu(QMenu) 用于将一个 QMenu 对象设置为 QPushButton 的下拉菜单。当用户单击按钮时,会自动显示菜单。
  2. menu()
    • menu() 返回与 QPushButton 关联的 QMenu 对象,如果未设置菜单,则返回 None。
  3. showMenu()
    • showMenu() 在不单击按钮的情况下强制显示菜单。
  4. QMenu 相关 API:
    • addMenu(QMenu) 用于将子菜单添加到菜单中。
    • addSeparator() 用于在菜单中添加分隔线。
    • addAction(QAction) 用于添加动作到菜单中。
    • setTitle(str) 用于设置菜单标题。
    • setIcon(QIcon) 用于设置菜单图标。
    • triggered(QAction) 信号在菜单中的动作被触发时发出。可以使用该信号处理菜单事件。

示例1代码:

from PyQt5.Qt import *
from PyQt5.QtGui import QIcon
import sysapp = QApplication(sys.argv)window = QWidget()
window.resize(300, 300)btu = QPushButton(QIcon('mouse.png'), '按钮', window)     # 使用最全的构造函数
btu.setIconSize(QSize(50, 50))
btu.resize(100, 50)# 菜单的设置
mean = QMenu()# 行为动作:新建、打开、分割线、退出
new_action = QAction(QIcon('mouse.png'), '新建')
new_action.triggered.connect(lambda: print('新建文件'))open_action = QAction(QIcon('mouse.png'), '打开')
open_action.triggered.connect(lambda: print('打开文件'))exit_action = QAction('退出')
exit_action.triggered.connect(lambda: print('退出'))# 子菜单
open_recent_menu = QMenu(mean)      # 将子菜单添加到主菜单中
open_recent_menu.setTitle('最近打开')file_action = QAction('PyQt5学习')# 添加
mean.addAction(new_action)
mean.addAction(open_action)# 子菜单添加行为后添加到主菜单中
open_recent_menu.addAction(file_action)
mean.addMenu(open_recent_menu)mean.addSeparator()     # 添加分割线
mean.addAction(exit_action)btu.setMenu(mean)   # 设置菜单window.show()
sys.exit(app.exec_())

运行结果:

在这里插入图片描述

扁平化

在 PyQt5 中,QPushButton 类提供了扁平化按钮的功能。以下是 QPushButton 中与扁平化相关的 API 的说明:

  1. setFlat(bool):
    • setFlat(bool) 用于设置按钮是否扁平化。
    • 参数 bool 为 True,按钮将显示为扁平化样式;为 False,按钮将显示为正常样式。
  2. isFlat():
    • isFlat() 返回一个布尔值,表示按钮是否处于扁平化状态。
    • 如果按钮被设置为扁平化,则返回 True;否则返回 False。

示例代码:

from PyQt5.Qt import *
import sysapp = QApplication(sys.argv)window = QWidget()
window.resize(300, 300)btu = QPushButton(window)
btu.setStyleSheet('background-color: red;')
btu.setText('这是一个按钮')
btu.setFlat(True)   # 设置按钮为扁平化print(btu.isFlat())window.show()
sys.exit(app.exec_())

运行结果:
设置背景颜色之后,再设置为扁平化,就不会绘制按钮的背景颜色。

在这里插入图片描述

默认处理

在 PyQt5 中,QPushButton 类提供了默认处理按钮的功能。使用默认处理功能后,当用户按下回车键时,会自动触发与该按钮相关联的信号,从而实现点击该按钮的效果。

以下是 QPushButton 中与默认处理相关的 API 的说明:

  1. setAutoDefault(bool)
    • setAutoDefault(bool) 用于设置按钮的默认处理功能是否打开。
    • 参数 bool 为 True,按钮默认处理功能打开;为 False,按钮默认处理功能关闭。
  2. autoDefault()
    • autoDefault() 返回一个布尔值,表示按钮是否开启了默认处理功能。
    • 如果按钮开启了默认处理功能,则返回 True;否则返回 False。
    • 示例用法:
  3. setDefault(bool)
    • setDefault(bool) 用于设置按钮为默认按钮。
    • 默认按钮表示当用户按下回车键时,会自动触发与该按钮相关联的信号。
    • 参数 bool 为 True,按钮设置为默认按钮;为 False,按钮取消默认按钮的设置。
  4. isDefault():
    • isDefault() 返回一个布尔值,表示按钮是否为默认按钮。
    • 如果按钮为默认按钮,则返回 True;否则返回 False。

示例代码:

from PyQt5.Qt import *
import sysapp = QApplication(sys.argv)window = QWidget()
window.resize(300, 300)btu1 = QPushButton(window)
btu1.setText('btu')btu = QPushButton(window)
btu.setText('这是一个按钮')
btu.move(100, 100)btu.pressed.connect(lambda: print('这个按钮被按下'))btu.setAutoDefault(True)    # 给btu设置为自动默认window.show()
sys.exit(app.exec_())

运行结果:
运行后鼠标点击“这是一个按钮”按钮被点击选中,按下回车键,按钮被点击,执行打印结果。

在这里插入图片描述
将以上btu.setAutoDefault(True)换成btu.setDefault(True),即运行程序后,在一开始就将按钮变为默认按钮。

运行结果:

在这里插入图片描述

右键菜单

在 PyQt5 中,QPushButton 类提供了右键菜单的功能。通过使用该功能,用户可以在右键单击按钮时弹出自定义菜单。

以下是 QPushButton 中与右键菜单相关的 API 的说明:

  1. customContextMenuRequested(QPoint)

    • customContextMenuRequested(QPoint) 是一个信号,当用户在按钮上右键单击时发射。
    • 该信号会将鼠标右键单击的位置(QPoint)作为参数传递给与之相关联的槽函数,槽函数可以利用此位置信息进行自定义菜单的弹出操作。
  2. setContextMenuPolicy(Qt.CustomContextMenu)

    • setContextMenuPolicy(Qt.CustomContextMenu) 用于设置按钮的菜单策略为自定义菜单。
    • 自定义菜单策略开启后,当用户在该按钮上右键单击时,customContextMenuRequested(QPoint) 信号就会被触发。
  3. Qt.DefaultContextMenu()

    • Qt.DefaultContextMenu() 是一个用于内置菜单的常量,表示用户在按钮上右键单击时弹出的默认菜单。
    • 调用对象方法contextMenuEvent(event),它 是一个重写的方法,用于在用户右键单击按钮时弹出内置菜单。
  4. Qt.CustomContextMenu

    • Qt.CustomContextMenu 是一个用于自定义菜单的常量,表示用户在按钮上右键单击时必须弹出自定义菜单。

示例1代码:

from PyQt5.Qt import *
import sysclass Window(QWidget):def contextMenuEvent(self, evt):mean = QMenu(self)  # 主菜单new_action = QAction(QIcon('mouse.png'), '新建')new_action.triggered.connect(lambda: print('新建文件'))open_action = QAction(QIcon('mouse.png'), '打开')open_action.triggered.connect(lambda: print('打开文件'))exit_action = QAction(QIcon('mouse.png'), '关闭')exit_action.triggered.connect(lambda: print('关闭'))open_recent_menu = QMenu(mean)open_recent_menu.setTitle('最近打开')open_recent_action = QAction('PyQt5学习')# 将创建的行为动作和子菜单添加到主菜单中mean.addAction(new_action)mean.addAction(open_action)open_recent_menu.addAction(open_recent_action)mean.addMenu(open_recent_menu)mean.addSeparator()mean.addAction(exit_action)mean.exec_(evt.globalPos())if __name__ == '__main__':app = QApplication(sys.argv)window = Window()window.resize(300, 300)window.show()sys.exit(app.exec_())

运行结果:

在这里插入图片描述
示例2代码:

from PyQt5.Qt import *
from PyQt5.QtCore import Qt
import sysapp = QApplication(sys.argv)window = Window()
window.resize(300, 300)def show_menu(point):   # point介绍到的是相对于窗口的位置mean = QMenu(window)  # 主菜单new_action = QAction(QIcon('mouse.png'), '新建')new_action.triggered.connect(lambda: print('新建文件'))open_action = QAction(QIcon('mouse.png'), '打开')open_action.triggered.connect(lambda: print('打开文件'))exit_action = QAction(QIcon('mouse.png'), '关闭')exit_action.triggered.connect(lambda: print('关闭'))open_recent_menu = QMenu(mean)open_recent_menu.setTitle('最近打开')open_recent_action = QAction('PyQt5学习')# 将创建的行为动作和子菜单添加到主菜单中mean.addAction(new_action)mean.addAction(open_action)open_recent_menu.addAction(open_recent_action)mean.addMenu(open_recent_menu)mean.addSeparator()mean.addAction(exit_action)# 将局部window上的point点,映射到全局屏幕mapToGlobal上的点dest_point = window.mapToGlobal(point)mean.exec_(dest_point)window.setContextMenuPolicy(Qt.CustomContextMenu)
window.customContextMenuRequested.connect(show_menu)window.show()
sys.exit(app.exec_())

运行结果:
如以上代码所示,因为point获取的是相对于窗口的坐标,而mean.exec_()是将菜单放到全局坐标(全屏幕)上,所以需要映射,将局部window上的point点,映射到全局屏幕mapToGlobal上的点。

在这里插入图片描述

QCommandLinkButton的使用

QCommandLinkButton 是 PyQt5 中的一个组件,它是一个带有标题和描述的命令按钮,通常用于表达重要操作的步骤。

使用 QCommandLinkButton 可以让用户更容易地理解和操作应用程序。

在 PyQt5 中,我们可以使用 QCommandLinkButton 构造函数创建命令链接按钮。QCommandLinkButton 构造函数有以下几种:

  • QCommandLinkButton(parent=None),创建一个没有文本和描述的命令链接按钮。
  • QCommandLinkButton(text, parent=None),创建一个具有文本但是没有描述的命令链接按钮。
  • QCommandLinkButton(text, description, parent=None),创建一个同时具有文本和描述的命令链接按钮。

示例代码:

from PyQt5.Qt import *
import sysapp = QApplication(sys.argv)window = QWidget()
window.resize(300, 300)combtu1 = QCommandLinkButton('按钮1', '这是描述1', window)
combtu1.move(100, 0)combtu2 = QCommandLinkButton(window)
combtu2.setText('按钮')
combtu2.setDescription('这是描述2')
combtu2.setIcon(QIcon('mouse.png'))
combtu2.move(100, 100)print(combtu1.description())    # 打印按钮1的描述window.show()
sys.exit(app.exec_())

运行结果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试,开源项目

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试:开源项目 开源项目完整代码及基础教程: https://mbd.pub/o/bread/ZZWclp5x CNN模型: 1.导入必要的库和模块&…

进阶C语言-指针的进阶(三)

模拟实现qsort函数 🎈1.测试bubble_sort,排序整型数组🎈2测试bubble_sort,排序结构体数组 📝关于qsort函数,我们可以先去cpluplus网站上面了解一下: //1.排序整型数组,两个整型可以…

玻色量子“天工量子大脑”亮相中关村论坛,大放异彩

2023年5月25日至30日,2023中关村论坛(科博会)在北京盛大召开。中关村论坛(科博会)是面向全球科技创新交流合作的国家级平台行业盛会,由科技部、国家发展改革委、工业和信息化部、国务院国资委、中国科学院、…

使用Selenium IDE录制脚本

今天,我们开始介绍基于开源Selenium工具的Web网站自动化测试。 Selenium包含了3大组件,分别为:1. Selenium IDE 基于Chrome和Firefox扩展的集成开发环境,可以录制、回放和导出不同语言的测试脚本。 2. WebDriver 包括一组为不同…

项目实战:展示第一页数据

1、在FruitDao接口中添加查询第一页数据和查询总记录条数 package com.csdn.fruit.dao; import com.csdn.fruit.pojo.Fruit; import java.util.List; //dao :Data Access Object 数据访问对象 //接口设计 public interface FruitDao {void addFruit(Fruit fruit);vo…

Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍

目录 一. Redis简介 二. Redis的安装 2.1 Linux版安装 2.2 windows版安装 三. Redis的常用命令 一. Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。 它…

【ES专题】ElasticSearch搜索进阶

目录 前言阅读导航前置知识特别提醒笔记正文一、分词器详解1.1 基本概念1.2 分词发生的时期1.3 分词器的组成1.3.1 切词器&#xff1a;Tokenizer1.3.2 词项过滤器&#xff1a;Token Filter1.3.3 字符过滤器&#xff1a;Character Filter 1.4 倒排索引的数据结构 <font color…

管理文件:文件批量重命名,轻松删除文件名中的空格

在文件管理中&#xff0c;我们经常会遇到文件名中带有空格的情况。这些空格可能会使文件在某些情况下难以被正确识别或使用&#xff0c;因此我们需要掌握一些技巧来轻松删除文件名中的空格。现在使用云炫文件管理器批量重命名进行批量处理。以下是如何操作的步骤详解&#xff1…

网易按照作者批量采集新闻资讯软件说明文档

大家好&#xff0c;我是淘小白~ 今天给大家介绍的爬虫软件是网易按照作者采集的软件 1、软件语言&#xff1a; Python 2、使用到的工具 Python selenium库、谷歌浏览器、谷歌浏览器驱动 3、文件说明&#xff1a; 4、配置文件说明&#xff1a; 5、环境配置 安装Python&am…

基于8051单片机与1601LCD的计算器设计

**单片机设计介绍&#xff0c;1665基于8051单片机与1601LCD的计算器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8051单片机和1601LCD的计算器设计是一种简单的嵌入式系统应用&#xff0c;其设计过程包括以下几个步骤…

联通智网科技正式入选国家级专精特新“小巨人”企业

近日&#xff0c;北京市经济和信息化局发布《第五批专精特新“小巨人”企业公告名单》&#xff0c;根据工业和信息化部发布的《工业和信息化部关于公布第五批专精特新“小巨人”企业和通过复核的第二批专精特新“小巨人”企业名单的通告》&#xff0c;联通智网科技股份有限公司…

百度竞价排名推广对比自然排名哪一个更具优势-华媒舍

在搜索引擎结论网页页面&#xff08;SERP&#xff09;中&#xff0c;我们经常会看到一些网站链接及其广告栏。这种连接一般分为两种类型&#xff1a;百度竞价推广排名推广与自然排名。究竟哪个更有优势&#xff1f;本文将对这几种排名形式进行科谱详细介绍。 什么叫百度竞价推广…

产品经理入门学习(三):产品解决方案

参考引用 黑马-产品经理入门基础课程 1. 需求分析 1.1 需求分析的目的 1.2 需求分析的方法 案例分析 福特公司的创始人亨利福特说&#xff1a;如果我当年去问顾客他们想要什么&#xff0c;他们肯定会告诉我&#xff1a;一匹更快的马 1.3 需求分析的实际应用 人性七宗罪&#…

javassmmysql爱心捐赠物资维护系统09536-计算机毕业设计项目选题推荐(附源码)

摘要 随着信息技术的快速发展&#xff0c;计算机应用已经进入成千上万的家庭。随着物资数量的增加&#xff0c;物资库存管理也存在许多问题。物资数据的处理量正在迅速增加&#xff0c;原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析&#xff0c;减…

SSM校园设备管信息管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

选题理由 随着计算机网络及多媒体技术的广泛应用&#xff0c;互联网已成为高校办学的基础设施和必备条件&#xff0c;基于互联网的高校信息管理越来越综合化&#xff0c;越来越多的教学管理、行政管理工作将架构在互联网上&#xff0c;互联网正在变为学校实施教学、科研和管理…

设计模式(23)解释器模式

一、介绍&#xff1a; 1、定义&#xff1a;解释器(Interpreter)模式是一种对象的行为模式。给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。 2、组成结构&#xff1a; &#xff08;1&…

Nginx搭配负载均衡和动静分离:构建高性能Web应用的完美组合

目录 前言 一、Nginx简介 1.Nginx是什么 2.Nginx的特点 3.Nginx在哪使用 4.如何使用Nginx 5.Nginx的优缺点 6.Nginx的应用场景 二、负载均衡和动静分离 1.负载均衡 2.动静分离 三、Nginx搭载负载均衡并提供前后端分离后台接口数据 1.Nginx安装 2.tomcat负载均衡 …

如何利用AppScan扫描H5页面,进行安全测试?

前期项目组接触的都是Web安全测试&#xff0c;今天做安全测试的时候&#xff0c;有一个项目刚好有H5页面&#xff0c;用以前那种AppScan内置浏览器的探索方式是不行的&#xff0c;研究了下&#xff0c;可以使用外部设备进行探索。 AppScan有两种手动探索方式&#xff0c;一种是…

【实战Flask API项目指南】之五 RESTful API设计

实战Flask API项目指南之 RESTful API设计 本系列文章将带你深入探索实战Flask API项目指南&#xff0c;通过跟随小菜的学习之旅&#xff0c;你将逐步掌握 Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧&#xff01; 前言 当小菜踏入Flask后端开发的世界时…

(免费领源码)java#ssm#mysql宠物网站系统07183-计算机毕业设计项目选题推荐

摘 要 在信息飞速发展的今天&#xff0c;网络已成为人们重要的信息交流平台。宠物网站每天都有大量的信息需要通过网络发布&#xff0c;为此&#xff0c;本人开发了一个基于B/S&#xff08;浏览器/服务器&#xff09;模式的宠物网站系统。 该系统以JJava编程语言、MySQL和SSM框…