继承关系
学习计划
可用信号
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_())