【python】PyQt5 学习 _6
本帖讲解 Button。
PyQt5 中常见的按钮类:QPushButton、QToolButton、QRadioButton、QCheckBox,他们都继承自 QAbstractButton 类。
QAbstractButton 提供的状态如下表
状态 | 含义 |
---|---|
isDown() | 提示按钮是否已按下 |
isChecked() | 提示按钮是否已经标记 |
isEnable() | 提示按钮是否可以被用户点击 |
isDown() | 提示按钮是否已按下 |
isCheckAble() | 提示按钮是否为可标记的 |
setAutoRepeat() | 设置按钮是否在用户长按时可以自动重复执行 |
QAbstractButton 提供的信号如下表
信号 | 含义 |
---|---|
Pressed | 当鼠标指针在按钮上并按下左键时触发该信号 |
Released | 当鼠标左键被释放时触发该信号 |
Clicked | 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号 |
Toggled | 当按钮的标记状态发生改变时触发该信号 |
QPUshButton 类中的常用方法
状态 | 含义 |
---|---|
isDown() | 提示按钮是否已按下 |
setCheckable() | 设置按钮是否已经被选中,如果设置 True,则表示按钮将保持已点击和释放状态 |
toggle() | 在按钮状态之间进行切换 |
setIcon() | 设置按钮上的图标 |
setEnabled() | 设置按钮是否可以使用,当设置为 False 时,按钮变成不可用状态,点击它不会发射信号 |
isChecked() | 返回按钮的状态,返回值为 True 或者 False |
setDefault() | 设置按钮的默认状态 |
setText() | 设置按钮的显示文本 |
text() | 返回按钮的显示文本 |
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class QtButton(QDialog):
def __init__(self,parent=None):
super(QtButton, self).__init__(parent)
layout=QVBoxLayout()#垂直布局 前文已经介绍过。
#创建按钮1
self.btn1=QPushButton('Button1')
#setCheckable():设置按钮是否已经被选中,如果为True,则表示按钮将保持已点击和释放状态
self.btn1.setCheckable(True)
#toggle():在按钮状态之间进行切换
self.btn1.toggle()
#点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮
self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))
#点击信号与槽函数进行连接,实现的目的:输入按键的当前状态,按下还是释放
self.btn1.clicked.connect(self.btnstate)
#添加控件到布局中
layout.addWidget(self.btn1)
#创建按钮2
self.btn2=QPushButton('image')
#为按钮2添加图标
self.btn2.setIcon(QIcon(QPixmap('image_path'))) # 本地的一张图片
##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮
self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2))
layout.addWidget(self.btn2)
self.btn3=QPushButton('Disabled')
#setEnabled()设置按钮是否可以使用,当设置为False的时候,按钮变成不可用状态,点击它不会发射信号
self.btn3.setEnabled(False)
layout.addWidget(self.btn3)
#创建按钮并添加快捷键 Alt+D
self.btn4=QPushButton('&Download')
#setDefault():设置按钮的默认状态
self.btn4.setDefault(True)
##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮
self.btn4.clicked.connect(lambda :self.whichbtn(self.btn4))
layout.addWidget(self.btn4)
self.setWindowTitle("Button demo")
self.setLayout(layout)
def btnstate(self):
#isChecked():判断按钮的状态,返回值为True或False
if self.btn1.isChecked():
print('button pressed')
else:
print('button released')
def whichbtn(self,btn):
#输出被点击的按钮
print('clicked button is '+btn.text())
if __name__ == '__main__':
app=QApplication(sys.argv)
btnDemo=QtButton()
btnDemo.show()
sys.exit(app.exec_())
-
本段代码 有 4 个 QPushButton,用到了 :设置按键状态(是否被点击或者释放的状态、禁用按键),添加图标,快捷键。
-
用到了框布局 Boxlayout。大家也可以尝试其他布局方式。
- 按键 绑定了相关函数,《【python】PyQt5 学习 _2 》中也有类似代码,只是本次相关联函数是自己写的,而之前的是直接调用 pyqt 封装好的。
- 晚安 ~~~
哈哈哈 Markdown 用得熟练多了 ~