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使用post提交数据到远程url的方法
Apr 29 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
python脚本替换指定行实现步骤
Jul 11 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
python进阶之自定义可迭代的类
Aug 20 Python
python 动态迁移solr数据过程解析
Sep 04 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
Python读取yaml文件的详细教程
Jul 21 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
php 数组元素快速去重
2017/05/05 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
2017/02/02 Javascript
js中开关变量使用实例
2017/02/24 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
浅谈Python type的使用
2019/11/19 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
浅析python标准库中的glob
2020/03/13 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
佳能英国官方网站:Canon UK
2017/08/08 全球购物
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
省三好学生申请材料
2014/01/22 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
Go语言应该什么情况使用指针
2021/07/25 Golang
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技