pyqt5-009
QToolButton:
描述:
提供了一个快速访问按钮
通常是在工具栏内部使用
工具按钮通常不显示文本标签,而是显示图标
例如:
继承:QAbstractButton
功能作用:
创建按钮
(继承)设置文本,图标,工具提示:
API:
setText(str)
setIcon(QIcon)
setIconSize(QSize)
setToolTip(str)
注意:如果文本和图标同时设置,则默认只展示图标
按钮样式风格:
API:
setToolButtonStyle(Qt.ToolButtonStyle)(风格取值):
Qt.ToolButtonconOnly(仅显示图标)
Qt.ToolButtonTextOnly(仅显示文字)
Qt.ToolButtonTextBesideIcon(文本显示在图标旁边)
Qt.ToolButtonTextUnderIcon(文本显示在图标下方)
Qt.ToolButtonFollowStyle(遵循风格)
toolButtonStyle()
应用场景:设置按钮的图标和文字组合
设置箭头:
API:
setArrowType(Qt.ArrowType) (Qt.ArrowType):
Qt.NoArrow 无箭头
Qt.UpArrow 向上箭头
Qt.DownArrow 向下箭头
Qt.LeftArrow 向左箭头
Qt.RightArrow 向右箭头
arrowType()
应用场景:将按钮编程一个具备特殊箭头的图标的按钮
自动提升:
API:
setAutoRaise(bool)
autoRaise()
应用场景:
在自动提升模式下,该按钮仅在鼠标指向是才会绘制3D帧
在工具栏(QToolBar)中,默认就是自动提升
菜单:
API:
setMenu(QMenu)
ment()
应用场景:通过菜单展示更多选项
菜单弹出模式:
API:
setPopupMode(QToolButton.ToolButtonPopuMode): QToolButton.ToolButtonPopupMode:
QToolButton.DelayedPopup:(鼠标按住一会才显示;类似于浏览器后退按钮)
QToolButton.MenuButtonPopup:(有一个专门的指示箭头;点击箭头才显示)
QToolButton.InstantPopup:(点了按钮就显示;点击信号不会发射)
popupMode()
应用场景:设置菜单弹出的触发方式
信号:
triggered(QAction*action):
当点击某个action是触发,并会将action传递出来
小技巧:
QAction对象可以通过:
setData(Any):绑定数据
data():获取数据
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.resize(300,300) window.setWindowTitle('QToolButton使用') tb = QToolButton(window) tb.setText('工具') # QToolButton 不显示文本,只显示图标 tb.setIcon(QIcon('click.jpg')) tb.setIconSize(QSize(60, 60)) tb.setToolTip('新建') # 显示提示信息 tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) # 设置按钮样式风格 # Qt.ToolButtonIconOnly 仅显示图标 # Qt.ToolButtonTextOnly 仅显示文字 # Qt.ToolButtonTextBesideIcon 文本显示在图标旁边 # Qt.ToolButtonTextUnderIcon 文本显示在图标下方 # Qt.ToolButtonFollowStyle 遵循风格 # 箭头优先级高 tb.setArrowType(Qt.DownArrow) # 设置箭头类型 # Qt.NoArrow 无箭头 # Qt.UpArrow 向上箭头 # Qt.DownArrow 向下箭头 # Qt.LeftArrow 向左箭头 # Qt.RightArrow 向右箭头 tb.setAutoRaise(True) # 设置提升,呈现3D menu = QMenu(tb) sub_menu = QMenu(menu) sub_menu.setTitle('新建') sub_menu.setIcon(QIcon('click.jpg')) action = QAction(QIcon('click.jpg'), '行为', menu) # action.triggered.connect(lambda : print('开始')) action.setData([1,2,3]) # 为行为绑定数据 action1 = QAction(QIcon('click.jpg'), '行为1', menu) action1.setData({'name':'sz'}) menu.addMenu(sub_menu) menu.addSeparator() menu.addAction(action) menu.addAction(action1) tb.clicked.connect(lambda :print('发动了')) tb.setMenu(menu) tb.setPopupMode(QToolButton.InstantPopup) # setPopupMode(QToolButton.ToolButtonPopuMode): QToolButton.ToolButtonPopupMode: # QToolButton.DelayedPopup:(鼠标按住一会才显示;类似于浏览器后退按钮) # QToolButton.MenuButtonPopup:(有一个专门的指示箭头;点击箭头才显示) # QToolButton.InstantPopup:(点了按钮就显示;点击信号不会发射) def do_action(action): print('触发行为', action.data()) tb.triggered.connect(do_action) # btn = QPushButton(window) # btn.setText('一般按钮') # btn.move(100, 100) # btn.setFlat(True) # # menu = QMenu(btn) # menu.setTitle('菜单') # sub_menu = QMenu(menu) # sub_menu.setTitle('新建') # sub_menu.setIcon(QIcon('click.jpg')) # # action = QAction(QIcon('click.jpg'), '行为', menu) # action.triggered.connect(lambda : print('开始')) # # menu.addMenu(sub_menu) # menu.addSeparator() # menu.addAction(action) # # btn.setMenu(menu) window.show() sys.exit(app.exec_())