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输出指定月份日历的方法
Apr 23 Python
Python元字符的用法实例解析
Jan 17 Python
Python贪心算法实例小结
Apr 22 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python爬虫设置代理IP(图文)
Dec 23 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
keras:model.compile损失函数的用法
Jul 01 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
分析Python list操作为什么会错误
Nov 17 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
综合图片计数器
2006/10/09 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
Add Formatted Text to a Word Document
2007/06/15 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
python 回溯法模板详解
2020/02/26 Python
如何用python写个模板引擎
2021/01/14 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
人力资源管理毕业求职信
2014/08/05 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android