![]() 上期我们介绍了PyQt中的按钮(QLabel),这期我们再来介绍一下PyQt中另一个按钮(QToolButton)。 正文 1 总体介绍QToolButton类为命令或选项提供快速访问按钮,通常在QToolBar中使用。 工具按钮是一个特殊的按钮,可以快速访问特定的命令或选项。与普通命令按钮相反,工具按钮通常不显示文本标签,而是显示一个图标。 工具按钮通常在使用QToolBar.addAction()创建新的QAction实例时创建,或者使用QToolBar.addAction()将现有的操作添加到工具栏中。也可以像其他任何小部件一样构建工具按钮,并将其与其他小部件一起排列在布局中。 工具按钮的一个经典用途是选择工具;例如绘图程序中的“笔”工具。这将通过使用QToolButton作为切换按钮来实现。 QToolButton支持自动浮起。在自动浮起模式下,只有当鼠标指向该按钮时,该按钮才会绘制一个3D帧。当在QToolBar中使用按钮时,该功能会自动打开。用setAutoRaise()改变它。 工具按钮的图标被设置为QIcon。这使得可以为禁用和活动状态指定不同的像素图。当按钮的功能不可用时使用禁用的pixmap。当鼠标指针悬停在按钮上时,显示活动像素图。 按钮的外观和尺寸可以通过setToolButtonStyle()和setIconSize()来调整。在QMainWindow的QToolBar中使用时,该按钮自动调整为QMainWindow的设置。工具按钮也可以显示箭头符号,而不是一个图标,用arrowType指定。 工具按钮也可以使用弹出按钮。弹出菜单可以使用setMenu()来设置。使用setPopupMode()来配置菜单设置的工具按钮可用的不同模式。默认模式是DelayedPopupMode,它有时与Web浏览器中的“后退”按钮一起使用。按下按钮一会儿,弹出一个菜单,显示可跳转到的页面列表。 更多的介绍请将官网:https://doc.qt.io/qt-5/qtoolbutton.html 二维码直达: ![]() 2 小例子我们以360浏览器为例,工具栏上面有一个网银的按钮,如下图: ![]() 我们这个例子,就是模拟一下。 部分核心代码需要全屏展示,录个屏算了。 classExample(QWidget): definitUI(self): tb = QToolButton(self) tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) 在这个例子中,当我们鼠标移到工具按钮上才会呈现出来,而且有图标和文字信息。 3 代码解析tb = QToolButton(self) 新建一个QToolButton对象。 tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) 该属性保持工具按钮是仅显示图标,仅显示文本,还是显示图标旁边/下方的文本。默认是Qt.ToolButtonIconOnly。要使工具按钮的样式遵循系统设置,请将此属性设置为Qt.ToolButtonFollowStyle。 在Unix上,将使用来自桌面环境的用户设置。 在其他平台上,Qt.ToolButtonFollowStyle只意味着图标。 工具按钮的样式,描述按钮的文本和图标应该如何显示:
# tb.setArrowType(Qt.DownArrow) 这句话我做了注释,是为了给大家演示一下。大家可以看下没有注释的效果,如下图: ![]() 出现了一个三角形。 setArrowType(Qt.ArrowType) 设置按钮是否显示一个箭头,而不是一个正常的图标。这将显示一个箭头作为QToolButton的图标。 默认情况下,这个属性被设置为Qt.NoArrow。 具体的描述如下: ![]() tb.setToolTip('选择适合你的支付方式') 这个很好理解,就是一个小贴士,当鼠标移动到按钮的时候就会显示信息。 tb.setPopupMode(QToolButton.MenuButtonPopup) 描述了弹出式菜单与工具按钮一起使用的方式:
还是用图片来得更直观些: QToolButton.DelayedPopup ![]() QToolButton.MenuButtonPopup ![]() QToolButton.InstantPopup ![]() tb.setText('支付方式')tb.setIcon(QIcon('icon/bank.ico')) 设置图标和文字。 tb.setAutoRaise(True) 此属性保持是否启用自动升起。默认是禁用的(即False)。当使用QMacStyle时,此属性在macOS上当前被忽略。 ![]() self.alipayAct = QAction(QIcon('icon/alipay.ico'),'支付宝支付', self)self.wechatAct = QAction(QIcon('icon/wechat.ico'),'微信支付', self)self.visaAct = QAction(QIcon('icon/visa.ico'),'Visa卡支付', self)self.master_cardAct = QAction(QIcon('icon/master_card.ico'),'万事达卡支付', self) 新建QAction对象,What’s the QAction? ![]() QAction类提供了可以插入到窗口小部件中的抽象用户界面操作。 在应用程序中,可以通过菜单,工具栏按钮和键盘快捷键调用许多常用命令。由于用户期望每个命令都以相同的方式执行,所以无论使用哪个用户界面,都将每个命令表示为一个动作是有用的。 操作可以添加到菜单和工具栏,并会自动保持同步。例如,在文字处理器中,如果用户按下粗体工具栏按钮,粗体菜单项将被自动检查。 动作可以创建为独立的对象,但也可以在菜单的构建过程中创建。 QMenu类包含用于创建适合用作菜单项的操作的便捷功能。 QAction可能包含图标,菜单文本,快捷方式,状态文本,“这是什么?”文本和工具提示。其中大部分可以在构造函数中设置。它们也可以用setIcon(),setText(),setIconText(),setShortcut(),setStatusTip(),setWhatsThis()和setToolTip()独立设置。对于菜单项,可以使用setFont()设置单个字体。 通俗点说:就是菜单或者按钮中需要执行的操作。 self.alipayAct.triggered.connect(self.on_click)self.wechatAct.triggered.connect(self.on_click)self.visaAct.triggered.connect(self.on_click)self.master_cardAct.triggered.connect(self.on_click) 当用户激活动作时发出此信号。例如,当用户点击菜单选项,工具栏按钮,或者按动作的快捷键组合,或者当调用trigger()时。值得注意的是,当setChecked()或toggle()被调用时,它不会被发射。 当我们执行各个菜单的时候发出这个信号,然后连接到我们的槽函数。 defon_click(self): if self.sender() == self.alipayAct: QDesktopServices.openUrl(QUrl('https://www.alipay.com/'))
4 最后ok,今天的介绍暂时就到这里吧,下期会对按钮部分进行一个综合的概述。如果你喜欢本篇文章,请给我点赞、赞赏(推荐, ![]() ),分享给你的好友们吧! 如果你想要本次教程中的相关源码,请关注微信公众号:学点编程吧,发送pyqt523,会自动得到相应的百度网盘下载链接。 题外话:本周的PyQt5就更新这一个吧!家人生病需要照顾。秋冬季是呼吸系统疾病高发期,各位要保重身体。身体最重要! ![]() 加入我们的学习交流QQ群,一起学习吧! ![]() 苹果用户也能支持一下啦,长按二维码扫描吧! ![]() 看完本文有收获?请转发分享给更多人 猜你喜欢: 更多的PyQt5文章请在微信公众号/在线课程/图文教程中查找。 ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:学点编程吧,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |