PyQt5 之QToolButton工具按鈕


具按鈕,一般在工具欄中顯示,工具欄中的工具按鈕一般只顯示圖標,供用戶快捷的使用一些功能,它繼承自QAbstractButton

一、常用API

1、setToolButtonStyle(Qt.ToolButtonTextBesideIcon):工具按鈕樣式

Qt.ToolButtonIconOnly 只顯示圖標(默認風格)
Qt.ToolButtonTextOnly 只顯示文本
Qt.ToolButtonTextBesideIcon 文本顯示在圖標旁
Qt.ToolButtonTextUnderIcon 文本顯示在圖標下方
Qt.ToolButtonFollowStyle 遵循風格

2、setArrowType(Qt.ArrowType)

Qt.NoArrow 無箭頭
Qt.UpArrow 向上箭頭
Qt.DownArrow 向下箭頭
Qt.LeftArrow 向左箭頭
Qt.RightArrow 向右箭頭

3、setAutoRaise(bool)

自動提示是一個按鈕的效果,指的是按鍵扁平化,但是當光標接觸按鍵時候

4、setPopupMode(QToolButton.InstantPopup)

QToolButton.DelayedPopup 延時打開

QToolButton.MenuButtonPopup  添加一個箭頭

QToolButton.InstantPopup  立刻打開,點擊不發送點擊信號

二、案例

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QCommandLinkButton-使用')
        self.resize(500, 400)
        self.setup_ui()
    
    def setup_ui(self):
        tb = QToolButton(self)
        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)
        # 自動提示是一個按鈕的效果,指的是按鍵扁平化,但是當光標接觸按鍵時候
        tb.setAutoRaise(True)
        
        menu = QMenu(tb)
        
        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"})


        menu.addMenu(sub_menu)
        menu.addSeparator()
        menu.addAction(action1)
        menu.addAction(action2)
        
        tb.setMenu(menu)
        # 菜單彈出模式
        tb.setPopupMode(QToolButton.InstantPopup)
        tb.clicked.connect(lambda :print("工具按鈕被點擊了"))
        def do_action(action):
            print("點擊了行為", action.data())
        tb.triggered.connect(do_action)
        # Qt.NoArrow
        #   無箭頭
        # Qt.UpArrow
        #   向上箭頭
        # Qt.DownArrow
        #   向下箭頭
        # Qt.LeftArrow
        #   向左箭頭
        # Qt.RightArrow
        #   向右箭頭
        #設置箭頭圖標
        tb.setArrowType(Qt.RightArrow)
        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM