【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.mzph.cn/news/132719.shtml

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

相关文章

【QT】 Qt自定义ui控件

在使用Qt的ui设计时,Qt为我们提供了标准的窗口控件,但是在很多复杂工程中,标准窗口控件并不能满足所有的需求,这时就需要我们自定义控件。我们自定义的类既可以作为独立的窗口显示,又可以作为一个控件显示。 我们要实现…

Flink SQL DataGen Connector 示例

Flink SQL DataGen Connector 示例 1、概述 使用 Flink SQL DataGen Connector,可以快速地生成符合规则的测试数据,可以在不依赖真实数据的情况下进行开发和测试。 2、使用示例 创建一个名为 “users” 的表,包含 6 个字段:id…

【Leetcode】349. 两个数组的交集

题意 给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 思路 这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决…

【Redis】hash数据类型-常用命令

文章目录 前置知识常用命令HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGET关于HMSETHLENHSETNXHINCRBYHINCRBYFLOAT 命令小结 前置知识 redis自身就是键值对结构了,哈希类型是指值本⾝⼜是⼀个键值对结构,形如key"key",value{{field1…

windows10编译高版本openssl

参考文章 参考文章中的windows编译为低版本,在高版本的openssl编译中已经没有:“ms\do_ms.bat”这个脚本了,现记录下编译过程 1、准备工作 安装ActivePerl,安装后会自动写入环境变量,参照参考文章测试安装成功与否&a…

前端框架Vue学习 ——(七)Vue路由(Vue Router)

文章目录 Vue路由使用场景Vue Router 介绍Vue Router 使用 Vue路由使用场景 使用场景:如下图,点击部门管理的时候显示部门管理的组件,员工管理的时候显示员工管理的组件。 前端路由:指的是 URL 中的 hash(#号)与组件之间的对应关…

软件开发必备神器!一文读懂10款热门看板工具推荐!

看板(Kanban)是一种流行的框架,用于实施敏捷和DevOps软件开发。它要求实时沟通每个人的能力,并全面透明地展示正在进行的工作。工作项目在看板上以可视化方式表示,使项目经理和所有团队成员可以随时查看每个工作的状态…

“网站不安全”该如何解决

当我们的网站被客户访问的时候,经常会出现提示不安全的情况,导致客户的不信任,从而出现客户流失的现象,这种情况我们应该如何解决呢? 首先,我们要确定网站会出现不安全的原因,一般来说&#xff…

vue项目中订单完成提交按钮动画

1. 动画1 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>Order</title><!-- <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/re…

【数据结构】单向链表的增删查改以及指定pos位置的插入删除

目录 单向链表的概念及结构 尾插 头插 尾删 ​编辑 头删 查找 在pos位置前插 在pos位置后插 删除pos位置 删除pos的后一个位置 总结 代码 单向链表的概念及结构 概念&#xff1a;链表是一种 物理存储结构上非连续 、非顺序的存储结构&#xff0c;数据元素的 逻辑顺序 是…

[vmware]vmware虚拟机压缩空间清理空间

vmware中的ubuntu使用如果拷贝文件进去在删除&#xff0c;vmare镜像文件并不会减少日积月累会不断是的真实物理磁盘空间大幅度减少&#xff0c;比如我以前windows操作系统本来只有30GB最后居然占道硬盘200GB&#xff0c;清理方法有2种。 第一种&#xff1a;vmware界面操作 第二…

掌握视频封面提取与剪辑技巧,提升视频品质

在当今的数字媒体时代&#xff0c;视频已成为人们获取信息、娱乐、社交等多种需求的重要方式。一个高质量的视频封面和剪辑技巧可以大大提高视频的吸引力和品质&#xff0c;因此&#xff0c;掌握视频封面提取与剪辑技巧对于视频制作者来说至关重要。那么现在一起来看看云炫AI智…

【STL】:list的模拟实现

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关list的模拟实现&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据…

Activiti监听器

文章目录 学习链接任务监听器 TaskListener监听的事件TaskListener 接口监听器委托类DelegateTask 任务监听实现方式 — 类class绘制流程图自定义任务监听器SiteReportUserTaskListener 测试 监听实现方式 — 表达式expression绘制流程图自定义 TaskListenerExpression测试spri…

【入门Flink】- 02Flink经典案例-WordCount

WordCount 需求&#xff1a;统计一段文字中&#xff0c;每个单词出现的频次 添加依赖 <properties><flink.version>1.17.0</flink.version></properties><dependencies><dependency><groupId>org.apache.flink</groupId><…

基于前馈神经网络完成鸢尾花分类

目录 1 小批量梯度下降法 1.0 展开聊一聊~ 1.1 数据分组 1.2 用DataLoader进行封装 1.3 模型构建 1.4 完善Runner类 1.5 模型训练 1.6 模型评价 1.7 模型预测 思考 总结 参考文献 首先基础知识铺垫~ 继续使用第三章中的鸢尾花分类任务&#xff0c;将Softm…

uinapp微信小程序隐私政策授权

&#x1f680; 隐私弹窗效果图&#xff1a; 1、启用隐私相关功能在manifest.json文件中配置 usePrivacyCheck: true "mp-weixin" : {"__usePrivacyCheck__" : true, },2、创建组件 <template><view><!-- 隐私政策弹窗 --><uni-popu…

阿里云服务器怎么购买更省钱?优惠入口分享

阿里云服务器怎么购买更省钱&#xff1f;不要直接在云服务器页面购买&#xff0c;不划算&#xff0c;在阿里云特价活动上购买更优惠&#xff0c;阿腾云atengyun.com分享阿里云服务器省钱购买方法&#xff0c;节省90%&#xff0c;可以先在阿里云CLUB中心领券 aliyun.club 专用满…

Java-Hbase介绍

1.1. 概念 base 是分布式、面向列的开源数据库&#xff08;其实准确的说是面向列族&#xff09;。HDFS 为 Hbase 提供可靠的 底层数据存储服务&#xff0c;MapReduce 为 Hbase 提供高性能的计算能力&#xff0c;Zookeeper 为 Hbase 提供 稳定服务和 Failover 机制&#xff0c…

【优选算法系列】【专题五位运算】第一节.常见的位运算(面试题 01.01. 判定字符是否唯一和268. 丢失的数字)

文章目录 前言常见的位运算一、判定字符是否唯一 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写二、丢失的数字 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 常见的…