python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
作者:jia666666 发布时间:2021-06-13 09:13:14
PyQt5切换按钮控件QPushButton简介
QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能和表现形式,常见的按钮QPushButton,QToolButton,QRadioButton和QCheckBox这些按钮均继承自QAbstractButton类,根据各自的使用场景通过图形显示出来
QAbstractButton提供的状态如下表
状态 | 含义 |
---|---|
isDown() | 提示按钮是否已按下 |
isChecked() | 提示按钮是否已经标记 |
isEnable() | 提示按钮是否可以被用户点击 |
isCheckAble() | 提示按钮是否为可标记的 |
setAutoRepeat() | 设置按钮是否在用户长按时可以自动重复执行 |
QAbstractButton提供的信号如下表
信号 | 含义 |
---|---|
Pressed | 当鼠标指针在按钮上并按下左键时触发该信号 |
Released | 当鼠标左键被释放时触发该信号 |
Clicked | 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号 |
Toggled | 当按钮的标记状态发生改变时触发该信号 |
QPUshButton类中的常用方法
方法 | 描述 |
---|---|
setCheckable() | 设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态 |
toggle() | 在按钮状态之间进行切换 |
setIcon() | 设置按钮上的图标 |
setEnabled() | 设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号 |
isChecked() | 返回按钮的状态,返回值为True或者False |
setDefault() | 设置按钮的默认状态 |
setText() | 设置按钮的显示文本 |
text() | 返回按钮的显示文本 |
为QPushButton设置快捷键
通过按钮名字能为QPushButton设置快捷键,比如名字为‘&Download'的按键,它的快捷键是‘Alt+D'。其规则是;想要实现快捷键为“Alt+D”,那么按钮的名字里有D这个字母,并且在D的前面加上“&”,这个字母D一般是按钮名称的首字母,而且在按钮显示时。“&”不会显示出来,如果想显示,那么需要转义,核心代码如下
self.btn4=QPushButton('&Download')
self.btn4.setDefault(True)
QPushButton按钮的使用实例
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Form(QDialog):
def __init__(self,parent=None):
super(Form, 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('E:\pyqt5快速开发与实战\第四章\images\python.png')))
##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮
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)
#创建按钮并添加快捷键
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=Form()
btnDemo.show()
sys.exit(app.exec_())
效果图如下
QPushButton代码分析:
在这个例子中,创建了四个按钮,这四个QPushButton对象被定义为类的实例变量,每个按钮都将clicked的信号发送给指定的槽函数,来响应按钮点击的事件
第一个按钮btn1,**通过toggle()函数来切换按钮的状态,其核心代码是
self.btn1=QPushButton('Button1')
self.btn1.setCheckable(True)
self.btn1.toggle()
当这个按钮点击时,将clicked信号发送给槽函数btnstate(),通过btn.isChecked来获得按钮是否被点击或者释放的状态,其核心代码是
self.btn1.clicked.connect(self.btnstate)
还可以通过lambda表达式来传递额外的参数btn1,将clicked信号发送给槽函数whichbtn(),其核心代码
self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))
第二个按钮btn2,上面显示一个图标,使用setIcon()方法接受一个QPixmap对象的图像文件作为输入参数,其核心代码是
self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速开发与实战\第四章\images\python.png')))
第三个按钮btn3,使用setEnabled()方法来禁用btn3按钮
self.btn3.setEnabled(False)
第四个按钮btn4,使用setDefault()方法·来设置按钮的默认状态。快捷键是‘&+文本'(&Download),通过‘Alt+D'快捷键来调用槽函数
self.btn4=QPushButton('&Download')
本文主要讲解了PyQt5切换按钮控件QPushButton详细使用方法与实例,更多关于PyQt5控件教程请查看下面的相关链接
来源:https://blog.csdn.net/jia666666/article/details/81513443


猜你喜欢
- golang中允许对值为 nil 的 slice 添加元素package main func main() { var s []int s
- 引言“ 这是MySQL系列笔记的第五篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或
- 下载:pip install apschedulerpip install django-apscheduler将 django-apsch
- 一、前言在我们日常聊天的过程中会使用大量的表情包,那么如何去获取表情包资源呢?今天老师带领大家使用python中的爬虫去一键下载海量表情包资
- 1、实例 DELIMITER // DROP PROCEDURE IF EXISTS `test`.`p_getvalue` // CREA
- 先利用pip安装pymssql库pip install pymssql具体连接、测试代码:# server默认为127.0.0.1,如果打开
- 同MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!概述首先主服务器把数据变化记录到主日志,然后从服务
- 在利用opencv进行图片处理时,经常需要查看图片关心区域或位置的像素数值,苦于没有应手的小软件,我用python3.6+opencv3.4
- 前言对于数据库中的树形结构数据,如部门表,有时候,我们需要知道某部门的所有下属部分或者某部分的所有上级部门,这时候就需要用到mysql的递归
- 做过主页的朋友,几乎没有一个人没用到它,它使我们排版更加轻松。有人说DW的表格没有Fp的好用,我认为不
- 前言一段时间没有用Union和Union,再用的时候忘了怎么用了。。。所以做一篇文章来记录自己学Union和Union的经历。提前准备在Sq
- 复制代码 代码如下: public partial class CMS_DBDataContext { partial void OnCre
- DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行
- 前言:Pandas 中应用 query 函数来进行数据筛选。query 函数的一般用法如下:df.query('expression
- 本文实例为大家分享了Python实现简易图书管理系统的具体代码,供大家参考,具体内容如下首先展示一下图书管理系统的首页:这是图书管理系统的发
- 第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -
- 使用fastapi框架开发web项目1、为什么要用fastapi?一直以来博主都是一直使用Django进行开发的,最近公司开始使用fasta
- 天冷,人懒,事多,我就不全文翻译了。只列几个标题,很多内容完全按照我自己的理解写了一下。想读原汁原味的请移步:Icon design tre
- <% dim week_ymd(8) '测出可以手动设定日期,比如this_ymd=#2008-04-1
- 从codered到nimda等,一大堆蠕虫把原来需要人工利用的漏洞都变成了程序自动利用了,大家还想去手工操作这些IIS漏洞么?让我们调整重心