二,控件学习--7.QWidget~QAbstractButton~QToolButton(工具按钮,通常在工具栏内部使用)

继承关系

在这里插入图片描述

学习计划

在这里插入图片描述

可用信号

在这里插入图片描述

action1.triggered.connect(lambda :print("点击了行为1菜单选项"))
action2.triggered.connect(lambda :print("点击了行为2菜单选项"))

功能作用

1.创建按钮

在这里插入图片描述

2.设置文本,图标,工具提示

在这里插入图片描述

#**********文本,图标,工具提示******开始

#QToolButton在同时设置文本和图标的情况下,只显示图标
tb.setText("工具")
tb.setIcon(QIcon("xxx.png"))
#设置图标大小
tb.setIconSize(QSize(60, 60))
#设置工具提示
tb.setToolTip("这是一个新建按钮")

#**********文本,图标,工具提示******结束
  • 如果想要同时显示文本和图标,参考下面3设置按钮样式风格

3.按钮样式风格设置

在这里插入图片描述
在这里插入图片描述

#**********设置按钮的样式风格******开始

# Qt.ToolButtonIconOnly	仅显示图标
# Qt.ToolButtonTextOnly	仅显示文字
# Qt.ToolButtonTextBesideIcon	文本显示在图标旁边
# Qt.ToolButtonTextUnderIcon	文本显示在图标下方
# Qt.ToolButtonFollowStyle	遵循风格

tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
#**********设置按钮的样式风格******结束

4.设置箭头

在这里插入图片描述

#**********设置箭头样式,将图标替代了******开始

# Qt.NoArrow
# 	无箭头
# Qt.UpArrow
# 	向上箭头
# Qt.DownArrow
# 	向下箭头
# Qt.LeftArrow
# 	向左箭头
# Qt.RightArrow
# 	向右箭头

tb.setArrowType(Qt.RightArrow)

#**********设置箭头样式,将图标替代了******结束

5.自动提升(鼠标放上去才会有3d效果,感觉作用不大,也就是选择哪个看起来比较明显)

在这里插入图片描述

#**********设置自动提升******开始

tb.setAutoRaise(True)

#**********设置自动提升******结束

6.菜单

在这里插入图片描述

#**********设置菜单应用******开始

menu = QMenu(tb)
menu.setTitle("菜单")


sub_menu = QMenu(menu)
sub_menu.setTitle("子菜单")
sub_menu.setIcon(QIcon("xxx.png"))

action1 = QAction(QIcon("xxx.png"), "行为1", menu)
#给行为绑定数据
action1.setData([1, 2, 3])
#给行为绑定数据
action2 = QAction("行为2", menu)
action2.setData({"name": "sz"})

#当所有动作有共同的操作时,这样使用
tb.triggered.connect(lambda :print("工具栏内有动作被点击了"))
tb.clicked.connect(lambda :print("工具按钮被点击了"))

#当点击某个action时触发, 并会将action传递出来,而且可以获取行为绑定的数据
action1.triggered.connect(lambda :print("点击了行为1菜单选项",action1.data()))
action2.triggered.connect(lambda :print("点击了行为2菜单选项",action2.data()))

#添加按钮到菜单
menu.addMenu(sub_menu)
menu.addSeparator()
menu.addAction(action1)
menu.addAction(action2)

#将菜单挂在控件上
tb.setMenu(menu)

#**********设置菜单应用******结束

7.菜单弹出模式(结合6菜单应用使用)

在这里插入图片描述

#**********设置菜单弹出模式******开始

#QToolButton.DelayedPopup--鼠标按住一会才显示
#QToolButton.MenuButtonPopup--有一个专门的指示箭头
#QToolButton.InstantPopup--点了按钮就显示

tb.setPopupMode(QToolButton.InstantPopup)

#**********设置菜单弹出模式******结束

8.代码总览

# 0. 导入需要的包和模块
from PyQt5.Qt import *
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)

# 2. 控件的操作
# 2.1 创建控件
window = QWidget()
# 2.2 设置控件
window.setWindowTitle("QToolButton使用")
window.resize(500, 500)

#工具栏控件创建
tb = QToolButton(window)

#**********文本,图标,工具提示******开始

#QToolButton在同时设置文本和图标的情况下,只显示图标
tb.setText("工具")
tb.setIcon(QIcon("xxx.png"))
#设置图标大小
tb.setIconSize(QSize(60, 60))
#设置工具提示
tb.setToolTip("这是一个新建按钮")

#**********文本,图标,工具提示******结束

#**********设置按钮的样式风格******开始

# Qt.ToolButtonIconOnly	仅显示图标
# Qt.ToolButtonTextOnly	仅显示文字
# Qt.ToolButtonTextBesideIcon	文本显示在图标旁边
# Qt.ToolButtonTextUnderIcon	文本显示在图标下方
# Qt.ToolButtonFollowStyle	遵循风格

tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)


#**********设置按钮的样式风格******结束

#**********设置箭头样式,将图标替代了******开始

# Qt.NoArrow
# 	无箭头
# Qt.UpArrow
# 	向上箭头
# Qt.DownArrow
# 	向下箭头
# Qt.LeftArrow
# 	向左箭头
# Qt.RightArrow
# 	向右箭头

tb.setArrowType(Qt.RightArrow)

#**********设置箭头样式,将图标替代了******结束

#**********设置自动提升******开始

tb.setAutoRaise(True)

#**********设置自动提升******结束

#**********设置菜单应用******开始

menu = QMenu(tb)
menu.setTitle("菜单")


sub_menu = QMenu(menu)
sub_menu.setTitle("子菜单")
sub_menu.setIcon(QIcon("xxx.png"))

action1 = QAction(QIcon("xxx.png"), "行为1", menu)
#给行为绑定数据
action1.setData([1, 2, 3])
#给行为绑定数据
action2 = QAction("行为2", menu)
action2.setData({"name": "sz"})

#当所有动作有共同的操作时,这样使用
tb.triggered.connect(lambda :print("工具栏内有动作被点击了"))
tb.clicked.connect(lambda :print("工具按钮被点击了"))

#当点击某个action时触发, 并会将action传递出来,而且可以获取行为绑定的数据
action1.triggered.connect(lambda :print("点击了行为1菜单选项",action1.data()))
action2.triggered.connect(lambda :print("点击了行为2菜单选项",action2.data()))

#添加按钮到菜单
menu.addMenu(sub_menu)
menu.addSeparator()
menu.addAction(action1)
menu.addAction(action2)

#将菜单挂在控件上
tb.setMenu(menu)

#**********设置菜单应用******结束

#**********设置菜单弹出模式******开始

#QToolButton.DelayedPopup--鼠标按住一会才显示
#QToolButton.MenuButtonPopup--有一个专门的指示箭头
#QToolButton.InstantPopup--点了按钮就显示

tb.setPopupMode(QToolButton.InstantPopup)

#**********设置菜单弹出模式******结束

# 2.3 展示控件
window.show()
# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值