PyQt5每天必学之切换按钮


Posted in Python onAugust 20, 2020

切换按钮是QPushButton的特殊模式。它是一个具有两种状态的按钮:按压和未按压。我们通过这两种状态之间的切换来修改其它内容。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
PyQt5 教程

在这个例子中,我们创建三个切换按钮。
他们将控制一个QFrame的背景颜色。

作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月3日
"""

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFrame
from PyQt5.QtGui import QColor

class Example(QWidget):

 def __init__(self):
 super().__init__()

 self.initUI()

 def initUI(self):

 self.col = QColor(0, 0, 0)

 redb = QPushButton('红', self)
 redb.setCheckable(True)
 redb.move(10, 10)

 greenb = QPushButton('绿', self)
 greenb.setCheckable(True)
 greenb.move(10, 60)

 blueb = QPushButton('蓝', self)
 blueb.setCheckable(True)
 blueb.move(10, 110)

 redb.clicked[bool].connect(self.setColor)
 greenb.clicked[bool].connect(self.setColor)
 blueb.clicked[bool].connect(self.setColor)

 self.square = QFrame(self)
 self.square.setGeometry(150, 20, 100, 100)
 self.square.setStyleSheet('QWidget { background-color:%s }' % 
  self.col.name())

 self.setGeometry(300, 300, 280, 170)
 self.setWindowTitle('切换按钮') 
 self.show()

 def setColor(self, pressed):

 source = self.sender()

 if pressed:
  val = 255
 else:
  val = 0

 if source.text() == '红':
  self.col.setRed(val)
 elif source.text() == '绿':
  self.col.setGreen(val)
 else:
  self.col.setBlue(val)

 self.square.setStyleSheet('QFrame { background-color:%s }' % 
  self.col.name())

if __name__ == '__main__':

 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

在我们的例子中,我们创建了三个切换按钮和一个QWidget。我们设置QWidget的背景色为黑色。切换按钮将切换颜色值的红,绿和蓝色部分。背景颜色将取决于切换。

self.col = QColor(0, 0, 0)

初始颜色值为黑色。

redb = QPushButton('红', self)
redb.setCheckable(True)
 redb.move(10, 10)

创建一个切换按钮。我们通过使用QPushButton 创建一个按钮,并设置其setCheckable()方法为真。

redb.clicked[bool].connect(self.setColor)

当我们点击切换按钮时一个信号连接到我们定义的方法。我们使用一个布尔值操作点击信号。

source = self.sender()

我们得到切换按钮的信息(也就是点击了哪个按钮)。

if source.text() == '红':
  self.col.setRed(val)

如果是红色按钮,我们相应地更新颜色的红色部分。

self.square.setStyleSheet('QFrame { background-color:%s }' % 
 self.col.name())

我们使用样式表来改变背景颜色。

程序执行后

PyQt5每天必学之切换按钮PyQt5每天必学之切换按钮

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 图片验证码代码分享
Jul 04 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
python opencv实现证件照换底功能
Aug 19 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
python多线程使用方法实例详解
Dec 30 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
pandas处理csv文件的方法步骤
Oct 16 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
判断Python中的Nonetype类型
May 25 Python
详解Python+OpenCV进行基础的图像操作
Feb 15 Python
基于Python实现nc批量转tif格式
Aug 14 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 #Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 #Python
PyQt5每天必学之组合框
Apr 20 #Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 #Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 #Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 #Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 #Python
You might like
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
JavaScript延迟加载
2021/03/09 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python调用C语言开发的共享库方法实例
2015/03/18 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
义诊活动通知
2015/04/24 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python