🌟想系统化学习 GUI 编程?看看这个:[Python GUI 编程] PySide & PyQt - 学习手册-CSDN博客
QAbstractButton 因为继承自 QWidget 所以,QWidget 中一些关于状态的设定对 QAbstractButton 派生出来的子类也同样有用,比如是否可用,是否展示等(这章就不提了):

0x01:isDown() & setDown(bool)
QAbstractButton 的 isDown()
可以判断按钮是否已经按下;setDown(bool)
则可以设置按钮是否被按下。看如下示例:
python
import sys
from PyQt5.Qt import *
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.resize(500, 200)
self.init_ui()
def init_ui(self):
# 创建多个由 QAbstractButton 类的子类创建的按钮
btn1 = QPushButton("QPushButton", self)
btn1.move(200, 50)
btn2 = QRadioButton("QRadioButton", self)
btn2.move(200, 100)
btn3 = QCheckBox("QCheckBox", self)
btn3.move(200, 150)
# 设置按钮被按下
btn1.setDown(True)
btn2.setDown(True)
btn3.setDown(True)
# 判断按钮是否被按下
print(btn1.isDown())
print(btn2.isDown())
print(btn3.isDown())
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
window = MyWidget()
# 3. 展示控件
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x02:isCheckable() & setChecked(bool)
0x0201:演示案例 --- isCheckable()
QAbstractButton 的 ischeckable()
可以判断按钮是否可以被(持续)选中;setChecked(bool)
则可以设置按钮是否可以被选中,看下面这个示例:
python
import sys
from PyQt5.Qt import *
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.resize(500, 200)
self.init_ui()
def init_ui(self):
# 创建多个由 QAbstractButton 类的子类创建的按钮
btn1 = QPushButton("QPushButton", self)
btn1.move(200, 50)
btn2 = QRadioButton("QRadioButton", self)
btn2.move(200, 100)
btn3 = QCheckBox("QCheckBox", self)
btn3.move(200, 150)
# 判断按钮是否可以被选中
print(btn1.isCheckable())
print(btn2.isCheckable())
print(btn3.isCheckable())
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
window = MyWidget()
# 3. 展示控件
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x0202:演示案例 --- setCheckable(bool)
虽然默认情况下,QPushButton 无法被选中,但是我们可以通过 setCheckable(bool)
设置它可以被选中,看看下面这个示例:
python
import sys
from PyQt5.Qt import *
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.resize(500, 200)
self.init_ui()
def init_ui(self):
# 创建多个由 QAbstractButton 类的子类创建的按钮
btn1 = QPushButton("QPushButton", self)
btn1.move(200, 50)
btn2 = QRadioButton("QRadioButton", self)
btn2.move(200, 100)
btn3 = QCheckBox("QCheckBox", self)
btn3.move(200, 150)
btn1.setCheckable(True) # 设置按钮可以被选中
# 判断按钮是否可以被选中
print(btn1.isCheckable())
print(btn2.isCheckable())
print(btn3.isCheckable())
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
window = MyWidget()
# 3. 展示控件
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x03:isChecked() & setChecked(bool)
QAbstractButton 的 setChecked(bool)
可以设置按钮是否被选中;isChecked()
则可以判断按钮是否被选中:
python
import sys
from PyQt5.Qt import *
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.resize(500, 200)
self.init_ui()
def init_ui(self):
# 创建多个由 QAbstractButton 类的子类创建的按钮
btn1 = QPushButton("QPushButton", self)
btn1.move(200, 50)
btn2 = QRadioButton("QRadioButton", self)
btn2.move(200, 100)
btn3 = QCheckBox("QCheckBox", self)
btn3.move(200, 150)
# 设置按钮被选中
btn1.setChecked(True)
btn2.setChecked(True)
btn3.setChecked(True)
# 判断按钮是否被选中
print(btn1.isChecked())
print(btn2.isChecked())
print(btn3.isChecked())
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
window = MyWidget()
# 3. 展示控件
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
