PyQt5按钮控件QPushButton状态的设置和获取方法
前面我们说过QAbstractButton按钮的动作可以茶分为按下,松开,其实还有选中(获得焦点),而这些动作都有对应的状态来设置和获取他们,这也是本文要说的按钮状态,对按钮状态的把控能让我们通过QPushButton针对获得的不同动作结果给出不同的处理方法。
前面我们说过QAbstractButton按钮的动作可以茶分为按下,松开,其实还有选中(获得焦点),而这些动作都有对应的状态来设置和获取他们,这也是本文要说的按钮状态,对按钮状态的把控能让我们通过QPushButton针对获得的不同动作结果给出不同的处理方法。
本文主讲的机个方法是:
btn.setDown() # 设置按钮是否按下 btn.setChecked() # 设置按钮是否选中 btn.setCheckable() # 设置按钮能否被选中 btn.setEnabled() # 设置按钮是否能用 btn.isDown() # 判断按钮是否按下 btn.isChecked() # 判断按钮是否被选中 btn.isCheckable() # 判断按钮是否被选中 btn.isEnabled() # 获取按钮是否能用
我们一个一个来观察一下这些方法产生的效果,这里可能效果不是很明显,我们组合起来看。
btn.setText('按钮状态') btn.setDown(True) # 设置按钮是否按下 print(btn.isDown())
下面再来演示一下选中方法,这里要注意首先说一下我们在判断按钮是否被选中的时候首先要个选中状态一个bool值,但是在这之前我们要给按钮属性设置为能否被选中,所以代码如下。
btn.setCheckable(True) btn.setChecked(True) # 设置按钮是否选中 print(btn.isChecked()) # 判断按钮是否被选中
上图中按钮处于默认按下状态,如果不明显可以把False带上试试。
下面再来实验一下设置按钮能不能被选中这个方法,我们通过QRadioButton来测试。代码如下:
btn3 = QRadioButton(window) btn3.move(160, 60) btn3.resize(80, 40) btn3.setText('按钮3') btn3.setEnabled(False) # 设置按钮是否能用 print(btn3.isEnabled()) # 获取按钮是否能用 btn4 = QRadioButton(window) btn4.move(60, 60) btn4.resize(80, 40) btn4.setText('按钮3') btn4.setEnabled(True) # 设置按钮是否能用 print(btn4.isEnabled()) # 获取按钮是否能用
效果如下:
可以看出来按钮3能被选中,4则处于不可用状态。完整代码在下面,大家自己测试。
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('按钮状态 - PyQt5中文网') window.resize(600, 450) # btn = QPushButton(window) # btn.move(60, 60) # btn.resize(80, 40) # btn.setText('按钮1') # btn2 = QPushButton(window) # btn2.move(160, 60) # btn2.resize(80, 40) # btn2.setText('按钮2') # btn.setDown(True) # 设置按钮是否按下 # print(btn.isDown()) # btn.setCheckable(True) # 设置按钮能否被选中 # btn.setChecked(True) # 设置按钮是否选中 # print(btn.isChecked()) # 判断按钮是否被选中 btn3 = QRadioButton(window) btn3.move(160, 60) btn3.resize(80, 40) btn3.setText('按钮4') btn3.setEnabled(False) # 设置按钮是否能用 print(btn3.isEnabled()) # 获取按钮是否能用 btn4 = QRadioButton(window) btn4.move(60, 60) btn4.resize(80, 40) btn4.setText('按钮3') btn4.setEnabled(True) # 设置按钮是否能用 print(btn4.isEnabled()) # 获取按钮是否能用 window.show() sys.exit(app.exec_())