python-pyqt5-工具按钮(QToolButton)添加菜单(QMenu)

QToolButton提供了比普通按钮更丰富的功能。它可以显示一个图标、一个文本或二者结合,还支持各种样式和行为,例如弹出菜单或多种动作模式

样式

setToolButtonStyle(Qt.ToolButtonStyle)              # 设置按钮样式风格# 参数Qt.ToolButtonIconOnly               # 仅显示图标Qt.ToolButtonTextOnly               # 仅显示文字Qt.ToolButtonTextBesideIcon         # 文本显示在图标旁边Qt.ToolButtonTextUnderIcon          # 文本显示在图标下方Qt.ToolButtonFollowStyle            # 遵循风格toolButtonStyle()                                   # 获取按钮样式风格

箭头图标

setArrowType(Qt.ArrowType)                          # 按钮变成一个具备特殊箭头图标的按钮# 参数Qt.NoArrow                          # 无箭头Qt.UpArrow                          # 向上箭头Qt.DownArrow                        # 向下箭头Qt.LeftArrow                        # 向左箭头Qt.RightArrow                       # 向右箭头arrowType()                                         # 获取设置的箭头图标样式

菜单弹出方式

setPopupMode(QToolButton.ToolButtonPopupMode)   # 设置菜单弹出方式# 参数QToolButton.DelayedPopup        # 鼠标按住一会才显示,类似于浏览器后退按钮QToolButton.MenuButtonPopup     # 有一个专门的指示箭头,点击箭头才显示QToolButton.InstantPopup        # 点了按钮就显示,点击信号不会发射

信号

triggered(QAction *action) 当点击某个action(菜单行为动作)时触发, 并会将action传递出来,点击菜单中的每一个行为动作都会触发triggered这个事件信号
pressed() 鼠标按下信号
released() 鼠标释放信号(控件内松开鼠标/鼠标移出控件范围后)
clicked(checked = False) 单击信号(控件内按下+控件内释放),传递按钮是否被选中状态
toffled(bool checked) 选中状态切换信号(一般在单选框或者复选框中使用),传递按钮是否被选中状态

QAction对象
setData(Any) # 绑定数据
data() # 获取数据

# -*- coding: utf-8 -*-
import sysfrom PyQt5.Qt import *def create_menu(parent):menu = QMenu("主菜单", parent)action_new = QAction("new", menu)action_new.setData("new")action_open = QAction("action_open", menu)action_open.setData("open")sub_menu = QMenu("export", parent)action_sub = QAction("to html", sub_menu)action_sub.setData("export to html")sub_menu.addAction(action_sub)menu.addAction(action_new)menu.addAction(action_open)menu.addMenu(sub_menu)menu.triggered.connect(menu_clicked)return menudef create_tool_button(parent):tool_button = QToolButton(parent)tool_button.setText('文件')# tool_button.setIcon(QIcon('ico.PNG'))# tool_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)# tool_button.move(250, 100)tool_button.setPopupMode(QToolButton.MenuButtonPopup)return tool_buttondef menu_clicked(action: QAction):print(action.data())if __name__ == '__main__':app = QApplication(sys.argv)window = QWidget()window.resize(500, 500)window.setWindowTitle('QToolButton-菜单')# 创建工具按钮tool_button = create_tool_button(window)# 创建菜单menu = create_menu(parent=tool_button)# 给工具按钮添加菜单tool_button.setMenu(menu)window.show()sys.exit(app.exec_())

在这里插入图片描述

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

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

相关文章

回显服务器

. 写一个应用程序,让这个程序可以使用网络通信,这里就需要调用传输层提供的api,传输层提供协议,主要是两个: UDP,TCP,它们分别提供了一套不同的api,socket api. UDP和TCP UDP:无连接,不可靠传输,面向数据报,全双工 TCP:有连接,可靠传输,面向字节流,全双工 一个客户端可以连接…

spring boot3参数校验基本用法

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途。 目录 前置条件 前言 导入依赖 使用介绍 配置检验规则 开启校验 使用注意 全局异常捕获返回友好提示信息 常用的校…

Leadmium TM Green AM dye,适用于流式细胞仪、荧光显微镜成像

文章关键词:铅离子(镉离子)绿色荧光探针,Leadmium TM Green AM dye,镉离子绿色荧光探针 一、基本信息 产品简介:Leadmium TM Green AM染料是一种高度特异性和高灵敏度的检测细胞内铅离子(lead)和镉&#…

qt-双臂SCARA机器人动画

qt-双臂SCARA机器人动画 一、演示效果二、核心程序三、下载链接 在Qt opengl中完成的双臂SCARA机器人的简单模拟。 一、演示效果 二、核心程序 #include "glwidget.h"#include <GL/glu.h>GLWidget::GLWidget(QWidget *parent) :QGLWidget(parent),pitch(30.…

js设计模式:适配器模式

作用: 可以将某种不同格式的数据转化为自己所期待的数据格式 或者对于一些存在兼容或者特殊处理的业务逻辑,可以进行一个适配 示例: //原始数据let oldData1 [{name: 王惊涛,age: 29},{name: 孙悟空,age: 800},{name: 嘉文四世,age: 27},{name: 关羽,age: 40},{name: 伊利丹…

【天衍系列 01】深入理解Flink的 FileSource 组件:实现大规模数据文件处理

文章目录 01 基本概念02 工作原理03 数据流实现04 项目实战4.1 项目结构4.2 maven依赖4.3 StreamFormat读取文件数据4.4 BulkFormat读取文件数据4.5 使用小结 05 数据源比较06 总结 01 基本概念 Apache Flink 是一个流式处理框架&#xff0c;被广泛应用于大数据领域的实时数据…

C# GTS四轴运动控制器实例(固高科技步进电机不带编码器)

注&#xff1a;由于电机不带编码器&#xff0c;无法做home和当前位置信息读取&#xff01; 功能&#xff1a; 三个轴的点位运动&#xff1a;前进后退&#xff0c;并分别显示每个轴的移动脉冲数(可以换算为距离)&#xff01; 开发环境&#xff1a;VS2017 硬件设备&#xff1a;固…

Vue-route核心知识整理

目录 1 相关理解 1.1 对 vue-router 的理解 1.2 对 SPA 应用的理解 1.3 对路由的理解 1.3.1 什么是路由&#xff1f; 1.3.2 路由的分类 2 几个注意点 3 路由的基本使用 4 嵌套 (多级) 路由 5 路由传参 5.1 query 方式传参 5.1.1 跳转路由并携带query参数&#xff0…

【项目】HTTP服务器

HTTP服务器 【项目】HTTP服务器项目介绍背景项目描述技术特点开发环境 网络协议栈HTTP协议特点URI & URL & URNURL格式HTTP请求与响应请求响应 CGI机制CGI的实现CGI的意义 日志封装TcpServer类线程池任务类CallBack回调方法类线程池类 封装HttpServer类主函数 封装HTTP…

Python asyncio的理解与入门

asyncio是Python标准库中用于编写异步代码的模块&#xff0c;它提供了一种基于协程的方式来处理并发任务。使用asyncio可以编写高效的异步程序&#xff0c;利用事件循环在单个线程中管理多个任务的执行。 下面是asyncio的基本概念和入门示例&#xff1a; 基本概念&#xff1a…

C 编译生成静态库、动态库的方式

背景 此前编程涉及到自定义编译生成静态库或动态库&#xff0c;为了方便以后查阅&#xff0c;在此记录一下&#xff0c;同时分享给大家。 将C文件编译成静态库或动态库可以使用不同的工具和编译选项&#xff0c;取决于你的需求和平台&#xff1b;以下是使用GCC编译器的简单示例…

Linux 内存top命令详解

通过top命令可以监控当前机器的内存实时使用情况&#xff0c;该命令的参数解释如下&#xff1a; 第一行 15:30:14 —— 当前系统时间 up 1167 days, 5:02 —— 系统已经运行的时长&#xff0c;格式为时:分 1 users ——当前有1个用户登录系统 load average: 0.00, 0.01, 0.05…

【ArcGIS微课1000例】0105:三维模型转体模型(导入sketchup转多面体为例)

文章目录 一、实验概述二、三维模型转多面体三、加载多面体数据四、注意事项一、实验概述 ArcGIS可以借助【导入3D文件】工具支持主流的三维模型导入。支持 3D Studio Max (.3ds)、VRML and GeoVRML 2.0 (.wrl)、SketchUp 6.0 (.skp)、OpenFlight 15.8 (.flt)、Collaborative …

【Web】没人比我更懂SSRF之入门必须要懂的知识汇总

目录 SSRF速览 伪协议 总览 file伪协议 dict伪协议 http协议 gopher伪协议 绕过 127限制绕过 302重定向绕过 DNS重绑定绕过 利用 gopher模拟请求打内网其他漏洞 Gopherus乱杀打组件 先看这篇文章&#xff1a;https://z3r4y.blog.csdn.net/article/details/135458…

算法——排序算法

目录 1、冒泡排序 2、插入排序 3、选择排序 4、归并排序 5、快速排序 6、堆排序 7、计数排序 8、桶排序 9、基数排序 常见的排序算法包括&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;选择排序&#xff08;Se…

Oracle12cR2之Job定时作业调度器详解

Oracle12cR2之Job定时作业调度器详解 文章目录 Oracle12cR2之Job定时作业调度器详解1.Oracle Job1. 关于Job2. 使用方法 2. Job详细说明1. 查看Job的相关视图2.SYS.DBA_JOBS视图字段详细说明 3. 创建及查看Job1. 创建Job2. 查看运行中的Job 1.Oracle Job 1. 关于Job 在 Oracle…

关于open3d的 kdtree模块的 查询偶发性崩溃问题

主要问题还是open3d的 kdtree模块的 query相关的算法引起的。没来得及在github提issue也查不到相关issue&#xff0c;因为是偶发性崩溃。所以需要记录一下&#xff0c;防止后人踩坑。 初始化kdtree的方式如下。 sample_pcd_data o3d.data.PCDPointCloud() pcd o3d.io.read_p…

面向对象分析和设计

面向对象分析与设计 面向对象的基本概念 软件工程学家Coad和Yourdon给出了一个定义&#xff1a;面向对象&#xff08;Object-Oriented&#xff09;对象&#xff08;Object&#xff09;继承&#xff08;Inheritance&#xff09;通信&#xff08;Communication&#xff09;。如…

设计模式: 策略模式

文章目录 一、什么是策略模式二、策略模式结构三、使用场景案例分析1、使用场景2、案例分析&#xff08;1&#xff09;消除条件分支 一、什么是策略模式 策略模式是一种行为型设计模式&#xff0c;它允许定义一组算法&#xff0c;并将每个算法封装在独立的类中&#xff0c;使它…

如何设计出用于喜欢的界面

要设计出用户喜欢的界面&#xff0c;你可以考虑以下几个方面&#xff1a; 用户研究&#xff1a;首先要了解用户的需求和偏好。你可以通过用户调研、用户访谈和数据分析来获取这些信息。了解用户的行为模式、喜好和痛点&#xff0c;有助于设计出更吸引人的界面。 直观的布局&am…