PyQt5按钮控件基类QAbstractButton可用信号
QAbstractButton可用信号主要有pressed(),released(),clicked(),toggled()四个,前文中也说过按钮的动作主要有按下、松开和点击三种,其次单选按钮和复选按钮还有切换动作,分别对应上面四个信号。
QAbstractButton可用信号主要有pressed(),released(),clicked(),toggled()四个,前文中也说过按钮的动作主要有按下、松开和点击三种,其次单选按钮和复选按钮还有切换动作,分别对应上面四个信号。
信号的作用在于控件被用户操作的时候发出一些指令用来完成一些其他代码的执行。下面就来看看这四个和QAbstractButton相关的信号是如何执行和使用的。
pressed():这里的动作细节大家可以直接通过代码演示,文章中很难详细体现。
btn1 = QPushButton(window) btn1.move(60, 60) btn1.resize(80, 40) btn1.setText('按钮1') btn1.pressed.connect(lambda: print('按钮被按下了'))
注意:当按钮被按下还没有松开的时候就已经输出内容了。
released():这个动作信号在按下鼠标的时候没有输出结果,而是松开的一瞬间才输出结果的,在实验的时候可以延长按下和松开2个动作体会一下。
btn1 = QPushButton(window) btn1.move(60, 60) btn1.resize(80, 40) btn1.setText('按钮1') # btn1.pressed.connect(lambda: print('按钮被按下了')) btn1.released.connect(lambda: print('按钮被松开了'))
clicked():点击的意思就是完成一个连贯的按下和松开动作,直接上代码(输出和released()有点相似)。
btn1 = QPushButton(window) btn1.move(60, 60) btn1.resize(80, 40) btn1.setText('按钮1') # btn1.pressed.connect(lambda: print('按钮被按下了')) # btn1.released.connect(lambda: print('按钮被松开了')) btn1.clicked.connect(lambda: print('按钮被点击了'))
toggled():虽然是QAbstractButton的信号,我们演示的时候还是选择单选或者复选按钮来演示更加容易明白。这里要提一下toggled()的返回结果是bool值,根据bool值来判断是否处于被选中状态。
btn2 = QRadioButton(window) btn2.move(160, 60) btn2.resize(80, 40) btn2.setText('按钮2') btn3 = QRadioButton(window) btn3.move(260, 60) btn3.resize(80, 40) btn3.setText('按钮2') btn2.toggled.connect(lambda: print('按钮完成切换'))
以上QAbstractButton按钮信号在动作的时候表现的不是很明显,大家直接复制下面完整代码自己体会。
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('按钮信号 - PyQt5中文网') window.resize(600, 450) btn1 = QPushButton(window) btn1.move(60, 60) btn1.resize(80, 40) btn1.setText('按钮1') # btn1.pressed.connect(lambda: print('按钮被按下了')) # btn1.released.connect(lambda: print('按钮被松开了')) btn1.clicked.connect(lambda: print('按钮被点击了'))btn1.clicked.connect(lambda val: print('=========', val)) btn2 = QRadioButton(window) btn2.move(160, 60) btn2.resize(80, 40) btn2.setText('按钮2') btn3 = QRadioButton(window) btn3.move(260, 60) btn3.resize(80, 40) btn3.setText('按钮2') btn2.toggled.connect(lambda: print('按钮完成切换'))btn2.toggled.connect(lambda val: print('=========', val)) window.show() sys.exit(app.exec_())