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二叉树遍历的实现方法
Nov 21 Python
Python列表list数组array用法实例解析
Oct 28 Python
Python教程之全局变量用法
Jun 27 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
Python退火算法在高次方程的应用
Jul 26 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
python抓取需要扫微信登陆页面
Apr 29 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
在python中logger setlevel没有生效的解决
Feb 21 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
Python生成九宫格图片的示例代码
Apr 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验证码
2015/05/04 PHP
php常用表单验证类用法实例
2015/06/18 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python3基础之基本运算符概述
2014/08/13 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
win与linux系统中python requests 安装
2016/12/04 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
详解python eval函数的妙用
2017/11/16 Python
python简单实现操作Mysql数据库
2018/01/29 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Python批量启动多线程代码实例
2020/02/18 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
浅谈python出错时traceback的解读
2020/07/15 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
宿舍违规检讨书
2014/01/12 职场文书
12岁生日演讲稿
2014/05/14 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
小鞋子观后感
2015/06/05 职场文书
初中语文教学研修日志
2015/11/13 职场文书
安全生产学习心得体会
2016/01/18 职场文书
Nginx利用Logrotate实现日志分割
2022/05/20 Servers