python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例


Posted in Python onFebruary 28, 2020

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_())

效果图如下

python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例

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控件教程请查看下面的相关链接

Python 相关文章推荐
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python编程argparse入门浅析
Feb 07 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
Python 面试中 8 个必考问题
Nov 16 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
Python字符串格式化输出代码实例
Nov 22 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
pandas数据拼接的实现示例
Apr 16 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
python 获取计算机的网卡信息
Feb 18 Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 #Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 #Python
Python post请求实现代码实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 #Python
Python接口测试get请求过程详解
Feb 28 #Python
You might like
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
PHP加密解密类实例代码
2016/07/20 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
js创建数组的简单方法
2016/07/27 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
Python自省及反射原理实例详解
2020/07/06 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
校园十佳歌手策划书
2014/01/22 职场文书
自我推荐信格式模板
2015/03/24 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js