QToolButton按钮

继承 QAbstractButton   

QToolButton是与工具操作相关的按钮,通常和QToolBar搭配使用。QToolButton一般不用来显示文本,而显示图标QIcon

需要  from PyQt5.QtWidgets import QToolButton

请注意不能在QToolButton实例化的时候直接传入文本字符串,因为该控件没有相应的初始化函数。也就是说这样做是错误的:self.test_button = QToolButton('Test', self)  如果要设置文本的话得通过setText()方法。但是setText()方法和setIcon()方法都使用的话,只会显示图标

 

复制代码
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QToolButton,QMenu,QAction
from PyQt5.QtCore import Qt

class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()
        self.resize(100,100)
        self.button = QToolButton(self)  # 实例化按钮
        self.button.move(50,30)
        self.button.setIcon(QIcon('大象.ico'))  #设置图标,也可以是png图片
        self.button.setToolTip('提示文本')    #设置提示文本
        self.button.setToolButtonStyle(Qt.ToolButtonFollowStyle)#设置按钮风格
        #Qt.ToolButtonIconOnly    仅显示图标-默认
        #Qt.ToolButtonTextOnly    仅显示文字
        #Qt.ToolButtonTextBesideIcon    文本显示在图标旁边
        #Qt.ToolButtonTextUnderIcon    文本显示在图标下方
        #Qt.ToolButtonFollowStyle   遵循风格

        #toolButtonStyle()   #获取样式风格

        self.button.setArrowType(Qt.UpArrow)   #设置箭头
        #Qt.NoArrow     无箭头
        #Qt.UpArrow     向上箭头
        #Qt.DownArrow    向下箭头
        #Qt.LeftArrow    向左箭头
        #Qt.RightArrow    向右箭头

        #arrowType()   获取箭头类型

        self.button.setAutoRaise(True)  #设置是否自动提升-鼠标在上面时会自动凸起
        #autoRaise()    返回是否自动凸起

        menu=QMenu(self)
        action1=QAction(menu)
        action1.setText('新建')
        action1.setData([1,2,3])  #给行为绑定数据
        action1.triggered.connect(self.A)
        menu.addAction(action1)
        self.button.setMenu(menu)   #给按钮设置菜单
        self.button.setPopupMode(QToolButton.MenuButtonPopup)  #设置菜单弹出模式
        #QToolButton.DelayedPopup    鼠标按住一会才显示-默认
        #QToolButton.MenuButtonPopup    有一个专门的指示箭头,点击箭头才显示
        #QToolButton.InstantPopup    点了按钮就显示,点击信号不会发射

        self.button.triggered.connect(self.B)  #点击行为时发出这个信号
        #会向槽函数传递被点击的行为

    def A(self):
        print('点击了新建行为')
    def B(self,action):
        print('点击了行为',action,action.data())  #action.data() 获取行为绑定的数据


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())
复制代码

 

 

天子骄龙

posted @   天子骄龙  阅读(8934)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示