1. """
  2. QPushButton:切换按钮就是QPsuhButton的一种特殊模式,他有两种状态:按下和未按下。我们在点击的时候切换两种状态,有很多场景会用到这个功能
  3. Author:dengyexun
  4. DateTime:2018.11.20
  5. """
  6. from PyQt5.QtWidgets import QWidget, QPushButton, QFrame, QApplication
  7. from PyQt5.QtGui import QColor
  8. import sys
  9.  
  10. class Example(QWidget):
  11. def __init__(self):
  12. super().__init__()
  13.  
  14. self.initGUI()
  15.  
  16. def initGUI(self):
  17. # 功能区
  18. self.col = QColor(0, 0, 0) # 颜色句柄
  19. # 初始化pushButton
  20. redb = QPushButton('Red', self)
  21. redb.setCheckable(True)
  22. redb.move(60, 60)
  23. # 槽与信号连接.当redb被点击时,传入一个bool值给setColor的pressed参数
  24. redb.clicked[bool].connect(self.setColor)
  25.  
  26. greenb = QPushButton('Green', self)
  27. greenb.setCheckable(True)
  28. greenb.move(60, 80)
  29. greenb.clicked[bool].connect(self.setColor)
  30.  
  31. blueb = QPushButton('Blue', self)
  32. blueb.setCheckable(True)
  33. blueb.move(60, 100)
  34. blueb.clicked[bool].connect(self.setColor)
  35.  
  36. # QFrame对象
  37. self.square = QFrame(self)
  38. self.square.setGeometry(110,110,200,200)
  39. # 更改QWidget的样式风格
  40. self.square.setStyleSheet("QWidget {backgroud-color:%s}" % self.col.name())
  41.  
  42. # Frame
  43. self.setGeometry(300, 300, 300, 200)
  44. self.setWindowTitle("toggle button")
  45. self.show()
  46.  
  47. def setColor(self, pressed):
  48. """
  49. 自定义槽函数
  50. :param pressed: 鼠标被按下的状态
  51. :return:
  52. """
  53. # 得到切换按钮的信息,哪一个信号被触发了
  54. source = self.sender()
  55. # 当按下按钮
  56. if pressed:
  57. val = 255
  58. else:
  59. val = 0
  60. # 判断这个信号的文本内容
  61. if source.text() == 'Red':
  62. self.col.setRed(val)
  63. elif source.text() == 'Green':
  64. self.col.setGreen(val)
  65. else:
  66. self.col.setBlue(val)
  67. # 更改QFrame的样式风格,设置背景为特定的颜色
  68. color = self.col.name() # 样式的背景色编码
  69. self.square.setStyleSheet("QFrame {background-color:%s}" % self.col.name())
  70.  
  71. print('ok')
  72.  
  73. if __name__ == '__main__':
  74. app = QApplication(sys.argv)
  75. ex = Example()
  76. sys.exit(app.exec_())

PyQT5-QPushButton切换按钮的更多相关文章

  1. C# PDF Page操作——设置页面切换按钮

    概述 在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法.示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页.下页.上页或者最后一页,另一种是设置按钮跳转到指定页面.两种方法适 ...

  2. 纯css实现checkbox开关切换按钮

    我们都知道 checkbox 标签默认样式 实在是太low了,故对CheckBox美化很有必要. 现提供两种方式对其进行美化. 方法一 <div class="switch-wrap ...

  3. Egret 中实现3种状态切换按钮

    一.游戏中的常用3种状态按钮 Egret种提供了2种状态切换的按钮ToggleButton. 但是在游戏中常用到3种状态的按钮,比如任务系统的领取.已领取.未领取. 比如下图中宝箱的打开.浏览后打开. ...

  4. 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框

    尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...

  5. C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到

    C# PDF Page操作——设置页面切换按钮   概述 在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法.示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页.下页.上页或者 ...

  6. NX二次开发-获取切换按钮的当前状态UF_MB_ask_toggle_state

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...

  7. pyqt5界面切换

    #主要的思路就是创建两个frame(如果有两个以上同理)使用setVisible()函数显示或者隐藏frame 参数是bool值import sys from PyQt5.QtWidgets impo ...

  8. bootstrap切换按钮点击后显示的颜色

    点击按钮后将按钮类库切换为值为btn-success ·· test ·· jquery code ·· $(".tag-checkbox").toggleClass(" ...

  9. [android] 切换按钮-自定义控件

    准备两张图片,按钮背景,上面的小开关 创建一个类MyToggleBtn,继承View 实现三个构造方法,传递上下文, 实现构造方法,传递Context对象,在java代码中实例化时主要使用这个 实现构 ...

随机推荐

  1. 免费SVN、Git项目托管主机推荐

    Unfuddle 200MB的免费空间,界面友好,特性丰富,支持Git,但只能一个账户一个用户并且只允许一个项目,付费服务相对来说价格偏高 CodeSpaces 500MB,一个账户两个免费用户,付费 ...

  2. iOS开发-- 使用NSNumber将int、float、long等数据类型加入到数组或字典中

    // 设置值 NSNumber *number=[NSNumber numberWithInt:45]; // 取值 NSLog(@"NSNumber %d",[number in ...

  3. Ansible Playbook handlers 语句

    handlers 用法如下,表示当 tasks 执行成功之后再执行 handlers,相当于 shell 中的 && 用法,如果 tasks 执行失败是不会执行 handlers 语句 ...

  4. python3.4连接和读取oracle数据表

    想用python连接Oracle并查询数据表,就写了个Demo.参考了以下网址. Python学习之 cx_Oracle学习记录 一 http://my.oschina.net/bxxfighting ...

  5. 转:Android开发:使用DDMS Heap进行内存泄露调试

    无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方.Android tools中的DDMS就带有一个很不错的内存监测工具Heap,本 ...

  6. 在windows2003下可以用哪个版本的JDK

    JDK在windows下只区分32位还是64位的, 而windows 2003有32位也有64位的,你先查查看自己机器是哪种,参照下面这个经验http://jingyan.baidu.com/arti ...

  7. ANDROID – TOOLBAR STEP BY STEP(转)

    今年(2014) 的 Google I/O 發表令多數人為之一亮的 Material Design,而 Google 也從「Google I/O 2014」 開始,大家也陸陸續續地看到其更新的 And ...

  8. 【H5】使用h5实现复制粘贴功能

    方案一 : 可满足大部分浏览器正常使用 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  9. 【PHP】 毫秒级时间戳和日期格式转换

    在并发量搞得情况下.需要开启毫秒级运算 mysql  支持: `create_time` datetime() DEFAULT NULL COMMENT '创建时间', 效果 PHP 代码实现: &l ...

  10. purge recyclebin之后dba_segments仍然有BIN$段

    现象: purge recyclebin之后dba_segments仍然有BIN$段. 如下,执行了purge recyclebin之后: SQL> select segment_name,SE ...