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 sys

from 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 menu


def 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_button


def 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_())

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Window系统GPT-SoVITS配置安装

GPT-SoVITS配置安装 GPT-SoVITS配置Python下载以及安装源文件安装依赖 运行整理在安装配置环境时遇到的报错总结 GPT-SoVITS配置 作者链接 Python下载以及安装 版本这里根据教程的版本走即可,这里不会安装python或者不会配置环境的参考我之前的文章 Python 3.9,…

Requests教程-11-重定向与请求历史

领取资料,咨询答疑,请➕wei: June__Go 上小节中,我们学习了requests的Session会话对象,本小节我们讲解一下requests的重定向与请求历史。 重定向的定义: 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方…

STM32 TIM输入捕获测频率占空比库函数

目录 一、输入捕获初始化函数 TIM_ICInit TIM_PWMIConfig TIM_ICStructInit 二、主从触发模式对应函数 TIM_SelectInputTrigger TIM_SelectOutputTrigger TIM_SelectSlaveMode 三、配置分频器函数 TIM_SetIC1Prescaler TIM_SetIC2Prescaler TIM_SetIC3Prescaler T…

浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用

摘要:本文分析了木材加工企业的特点、现状及常见电气火灾隐患,提出了消灭电气火灾隐患的措施。结尾介绍了木材加工企业常用电气设备的选用及电气火灾监控系统在其低压配电系统的应用方案及产品选型。 关键词:木材加工企业;电气火…

kafka的安装,用于数据库同步数据

1.0 背景调研 因业务需求,需要查询其他部门的数据库数据,不方便直连数据库,所以要定时将他们的数据同步到我们的环境中,技术选型选中了kafkaCDC Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久…

微服务—RabbitMQ高级(延迟消息)

本博客为个人学习笔记,学习网站:2023黑马程序员RabbitMQ入门到实战教程 高级篇章节 目录 延迟消息 死信交换机 延迟消息插件 下载安装 延迟交换机声明 ​编辑 发送延迟消息 订单状态同步问题 延迟消息 在电商的支付业务中,对于一些库…

基于springboot学生就业管理系统源码和论文

随着信息化时代的到来,管理系统都趋向于智能化、系统化,学生就业管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而…

word中插入代码

可以先把代码在highlightcode 中格式化后复制插入 highlightcode地址:https://highlightcode.com/ 复制到word后效果,可以看到美观多了 原始效果

Java面试题:volatile专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第4篇文章,我们一起来看看面试中会问到哪些关于volatile的问题吧。数据来源: 大部分来自于各机构(Java之父,Java继父,某灵,某泡,某客)以及各博主整理文档…

基于uniapp微信小程序的汽车租赁预约系统

随着现代汽车租赁管理的快速发展,可以说汽车租赁管理已经逐渐成为现代汽车租赁管理过程中最为重要的部分之一。但是一直以来我国传统的汽车租赁管理并没有建立一套完善的行之有效的汽车租赁管理系统,传统的汽车租赁管理已经无法适应高速发展,…

leetcode面试题 02.07. 链表相交

leetcode面试题 02.07. 链表相交 题目 思路 方案一:使用哈希表储存一个链表节点,在另一个链表进行查询是否有相同节点方案二:统计两个链表长度,然后末尾对齐,判断是否有相同节点 代码 使用哈希表set # Definition…

新手搭建服装小程序全攻略

随着互联网的快速发展,线上购物已经成为了人们日常生活中不可或缺的一部分。服装作为人们日常消费的重要品类,线上化趋势也日益明显。本文将详细介绍如何从零开始搭建一个服装小程序商城,从入门到精通的捷径,帮助你快速掌握小程序…

compile 未产生 target 目录

Problem 执行compile操作之后未产生对应的target目录 右击Project → Tree Appearance → Show Excluded Files

vue3项目配置按需自动导入API组件unplugin-auto-import

场景应用:避免写一大堆的import,比如关于Vue和Vue Router的 1、安装unplugin-auto-import npm i -D unplugin-auto-import 2、配置vite.config import AutoImport from unplugin-auto-import/vite//按需自动加载API插件 AutoImport({ imports: ["…

C# Winfrom实现的肺炎全国疫情实时信息图

运行结果: using System; using System.Drawing; using System.Text; using NSoup; using NSoup.Nodes; using System.IO; using System.Net; using System.Text.RegularExpressions; using System.Windows.Forms;namespace Pneumonia {public partial class MainFo…

Arcmap excel转shp

使用excel表格转shp的时候,如果你的excel里面有很多字段,直接转很大概率会出现转换结果错误的情况,那么就需要精简一下字段的个数。将原来的表格文件另存一份,在另存为的文件中只保留关键的经度、纬度、和用于匹配的字段即可&…

Java基于SpringBoot+Vue的图书管理系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

阿里云幻兽帕鲁Windows 服务器怎么上传存档文件?

通过控制台远程连接到 Windows 服务器桌面后,你可以打开文件夹,将本地的存档 zip 文件,直接拖拽到浏览器中,即可将存档文件传到服务器中的 workbench 文件交换目录。 替换存档前要先停止服务。 然后将 Saved.zip 文件解压&#xf…

芋道-------如何实现工作流退回后重新提交到之前退回的节点

一、概述 上一节,我们讲过了工作流如何退回到申请人,接下来我们来讲一讲,如何重新提交。这里重新提交可以是再走一遍正常流程,同时也可以是直接跳过中间的步骤,直接继续给上一步退回的人审批。文章中会提及这两种情况。…

4.5 Verilog 条件语句

关键词:if,选择器 条件语句 条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。 条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。 条件语句使用结构说明如下: if (conditio…