前面内容我们介绍了PyQt5常见的文本类控件和标签类控件的使用。
温故而知新
Python界面编程之PyQt常见控件展示,QTextEdit文本框类使用详解
Python界面编程之PyQt常见控件展示,QLineEdit文本框类使用详解
盘点界面编程中那些常用控件,详解PyQt5中标签控件QLabel的使用
今天,我们来了解下常用的按钮QPushButton类的使用
01QAbstractButton类
接前面的思路,了解QPushButton之前,我们还是来看下它继承自哪里?
>>> QPushButton.__mro__
追根溯源
(, , , , , , , )
一大堆内容,它的“祖先”我们就不讨论了,来看下它的直接父类QAbstractButton,从名字可以看出它还是一个按钮,还是一个“抽象按钮”。其实,它是PyQt5中其他按钮的基类,我们知道的一些具有按钮功能的控件基本都是它的派生类(比如:单选框、复选框等)。
按钮控件
先来看一下它到底抽象在哪里,我们知道,对于按钮,它有很多通用的属性和方法,如果QAbstractButton类提供了按钮的基本属性和方法,那么,它的抽象是成功的。事实上,它确实做到了。我们来看下常用的状态和方法。
常用状态
对于按钮来说,无外乎有下面几种状态
QAbstractButton支持普通按钮和开关按钮(按下去不会弹起来的那种按钮)。其中,一个按钮可否被选中这个特点在单选按钮QRadioButton和复选按钮QCheckBox类中得以体现。普通按钮的特性在QPushButton和QToolButton类中体现;而上面提到的这几种按钮类都提供了开关功能,大家结合自己需求选用合适的即可。
按钮可以模拟开关
此外,它还提供下面几种常用的信号
当然,对于一个按钮来讲,少不了对其文本、图标、快捷键的设置,而这些属性设置在QAbstractButton类中都有所涉及。我们来看下它提供的设置属性的一些方法。
>>>print([i for i in dir(QAbstractButton) if i.startswith('set')])
['setAcceptDrops', 'setAccessibleDescription', 'setAccessibleName', 'setAttribute', 'setAutoExclusive', 'setAutoFillBackground', 'setAutoRepeat', 'setAutoRepeatDelay', 'setAutoRepeatInterval', 'setBackgroundRole', 'setBaseSize', 'setCheckable', 'setChecked', 'setContentsMargins', 'setContextMenuPolicy', 'setCursor', 'setDisabled', 'setDown', 'setEnabled', 'setFixedHeight', 'setFixedSize', 'setFixedWidth', 'setFocus', 'setFocusPolicy', 'setFocusProxy', 'setFont', 'setForegroundRole', 'setGeometry', 'setGraphicsEffect', 'setHidden', 'setIcon', 'setIconSize', 'setInputMethodHints', 'setLayout', 'setLayoutDirection', 'setLocale', 'setMask', 'setMaximumHeight', 'setMaximumSize', 'setMaximumWidth', 'setMinimumHeight', 'setMinimumSize', 'setMinimumWidth', 'setMouseTracking', 'setObjectName', 'setPalette', 'setParent', 'setProperty', 'setShortcut', 'setShortcutAutoRepeat', 'setShortcutEnabled', 'setSizeIncrement', 'setSizePolicy', 'setStatusTip', 'setStyle', 'setStyleSheet', 'setTabOrder', 'setTabletTracking', 'setText', 'setToolTip', 'setToolTipDuration', 'setUpdatesEnabled', 'setVisible', 'setWhatsThis', 'setWindowFilePath', 'setWindowFlag', 'setWindowFlags', 'setWindowIcon', 'setWindowIconText', 'setWindowModality', 'setWindowModified', 'setWindowOpacity', 'setWindowRole', 'setWindowState', 'setWindowTitle']
感兴趣的小伙伴下去之后慢慢研究,这里作为一个引子,就不再赘述了。
02QPushButton使用
QPushButton是PyQt中经典的不能再经典的按钮了。我们来看下它的常用方法。
使用快捷键是个不错的选择
此外,它还可以设置快捷键,一般通过显示文本处理,来达到设置快捷键的目的:在相应的快捷键前面加"&"符号。当使用Alt+快捷键时,按钮会被按下。如:
button = QPushButton('&Download')
button.setDefault(True)
当在程序界面使用快捷键Alt + 'D'时,该button按钮被按下。
除了这些,我们可以对按钮文字格式进行自定义设置(下面这些设置应该在PyQt5中通用的)
from PyQt5 import QtGui
from PyQt5.Qt import QPushButton
...(省略部分代码)
button = QPushButton
font = QtGui.QFont()font.setFamily('微软雅黑')
font.setBold(True)
font.setPointSize(10)
font.setWeight(50)
button.setFont(font)
个性化定制显示效果
利用QFont类设置,然后button实例应用该格式
还可以制作一个图标按钮,具体不赘述了,看下面实例吧。
03举个例子
上面介绍了按钮的一些方法和属性,这些个方法属性如何应用呢?
看下面的例子。创建四个按钮控件,然后处理信号事件,打印输出那些按钮被单击了。
首先导入模块
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
自定义类QPushButtonDemo类
创建自定义类
创建完成后,还要为控件编写槽函数。如下:
剩下的代码
然后,我们来看下运行效果
运行效果展示
好了,今天的内容就到这里了,喜欢的小伙伴们点个赞呗。喜欢Python编程的小朋友欢迎关注我,后续会推出更精彩的内容。
欢迎留言加关注
转载请注明出处,百家号:Python高手养成