繼承 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_())
天子驕龍