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

天子骄龙

原文地址:https://www.cnblogs.com/liming19680104/p/10357450.html