GUI学习之二十六——QColorDialog学习总结
今天要讲的是QColorDialog对话框。
一.描述
QColorDialog对话框是用来为用户提供颜色选择的对话框控件,和上一章的QFontDialog控件一样,是继承自QDialog这个基类。其使用方法和QFontDialog基本相同。
二.功能作用
1.构造函数
可以直接声明使用,也可以为其传递一个QColor对象作为默认颜色
color = QColor(30,40,50)
color_dialog =QColorDialog(color,self)
这里创建了一个RGB值为30,40,50的颜色对象,然后弹出看对话框就有了默认的颜色
2.打开对话框
打开对话框有三种常用方法:
QColorDialog.show()
QColorDialog.open()
QColorDialog.exec()
如果用show()方法话是可以发射colorSelected这个信号的
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test()
self.resize(800,500) def UI_test(self):
btn = QPushButton('color',self)
btn.move(50,50)
btn.clicked.connect(self.fun)
self.btn = btn
pass def fun(self):
color = QColor(30,40,50)
color_dialog =QColorDialog(color,self)
color_dialog.colorSelected.connect(self.change_color)
color_dialog.show() def change_color(self,color):
palette = QPalette()
palette.setColor(QPalette.Background,color)
self.setPalette(palette)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
show方法弹出改变背景颜色
而open()是直接传递个槽函数的,并且槽函数是没有参数传递的。只能手动获取。
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test()
self.resize(800,500) def UI_test(self):
btn = QPushButton('color',self)
btn.move(50,50)
btn.clicked.connect(self.fun)
self.btn = btn
pass def fun(self):
color = QColor(30,40,50)
color_dialog =QColorDialog(color,self)
color_dialog.colorSelected.connect(self.change_color)
# color_dialog.show()
color_dialog.open(self.change_color)
self.col_dia = color_dialog def change_color(self):
palette = QPalette()
palette.setColor(QPalette.Background,self.col_dia.selectedColor()) #直接获取颜色值
self.setPalette(palette)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
open方式弹出改变背景色
exec是有个返回值的,只有点击确认键返回值为1。可以利用这个值来执行相对应的操作。
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test()
self.resize(800,500) def UI_test(self):
btn = QPushButton('color',self)
btn.move(50,50)
btn.clicked.connect(self.fun)
self.btn = btn
pass def fun(self):
color = QColor(30,40,50)
color_dialog =QColorDialog(color,self)
color_dialog.colorSelected.connect(self.change_color)
# color_dialog.show()
self.col_dia = color_dialog
if self.col_dia.exec(): #利用exec的返回值
self.change_color()
def change_color(self):
palette = QPalette()
palette.setColor(QPalette.Background,self.col_dia.selectedColor()) #直接获取颜色值
self.setPalette(palette)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
exec方式弹出并改变北京市
3.选项控制
QColorDialog.setOption(self, option: 'QColorDialog.ColorDialogOption', on: bool = ...)
QColorDialog.setOptions(self, options: typing.Union['QColorDialog.ColorDialogOptions', 'QColorDialog.ColorDialogOption'])
QColorDialog.testOption(self, option: 'QColorDialog.ColorDialogOption') #——>bool
# type: 'QColorDialog.ColorDialogOption'
ShowAlphaChannel # 允许选择Alpha分量(透明度)
NoButtons # 取消确认、取消按钮
DontUseNativeDialog # 不使用原生色彩对话框而选用Qt的标准色彩对话框
其中NoButtons的选项常常结合当前色彩改变来实时作用改变颜色
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test()
self.resize(800,500) def UI_test(self):
btn = QPushButton('color',self)
btn.move(50,50)
btn.clicked.connect(self.fun)
self.btn = btn
pass def fun(self):
color = QColor(30,40,50)
color_dialog =QColorDialog(color,self)
color_dialog.colorSelected.connect(self.change_color)
color_dialog.setOptions(QColorDialog.NoButtons | QColorDialog.ShowAlphaChannel) #取消按钮,开启透明度
color_dialog.currentColorChanged.connect(self.change_color) #当前颜色发生变化
self.col_dia = color_dialog
color_dialog.show() def change_color(self,col):
palette = QPalette()
palette.setColor(QPalette.Background,col)
self.setPalette(palette)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
实时改变背景色
4.静态方法
首先有个概念:标准颜色和自定义颜色。标准颜色是对话框提供的颜色(Basic Colors),而自定义颜色就是下面的用户定义的颜色(Custom Colors)。
自定义颜色一共用18组可以使用。顺序是从左上开使为0,0下面的是1,右边的是2。
QColorDialog.setCustomColor(index: int,color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) #设定自定义颜色
QColorDialog.setStandardColor(index: int, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) #设定标准颜色
这两段代码是指定颜色格子里的颜色的,要注意的是自定义颜色必须是在对控件进行实例化以前定义。
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test() def UI_test(self):
QColorDialog.setCustomColor(1,QColor(50,60,70))
cd = QColorDialog(self)
cd.show() pass
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
设定自定义颜色
运行一下,可以发现自定义颜色位置1已经有了一个自定义颜色
还有一个静态方法是获取颜色
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test() def UI_test(self):
btn = QPushButton('test',self)
btn.clicked.connect(self.color_change)
pass def color_change(self):
color = QColorDialog.getColor(QColor(50,50,30),self,title='选择颜色') #获取颜色
palete = QPalette()
palete.setColor(QPalette.Background,color)
self.setPalette(palete)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
注意一点,如果点击对话框的OK按钮可以改变当前的背景色,但是如果点击了Cancel为什么就变成黑的了?因为我们是在按钮的槽函数里定义的QColorDialog,那么每次点击按钮都会创建一个新的对话框,并且和当前的显示状态是没关系的,所以当点击了Cancel就改成默认的黑色了。
三.常用信号
和字体对话框的常用信号差不多。
QColorDialog.colorSelected() #颜色选择
QColorDialog.currentColorChanged() #当前颜色变化
用法和字体对话框也类似。我们直接放个案例就可以了
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test() def UI_test(self):
self.cd = QColorDialog(self)
btn = QPushButton('test',self)
btn.clicked.connect(lambda :self.cd.show())
self.cd.colorSelected.connect(self.color_change) #传递参数:color
pass def color_change(self,color):
palete = QPalette()
palete.setColor(QPalette.Background,color)
self.setPalette(palete) if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
colorSelected案例
from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test() def UI_test(self):
self.cd = QColorDialog(self)
self.cd.setOptions(QColorDialog.NoButtons) #一般当前颜色变化是用作展示的,可以不用按钮
btn = QPushButton('test',self)
btn.clicked.connect(lambda :self.cd.show())
self.cd.currentColorChanged.connect(self.color_change)
pass def color_change(self,color):
palete = QPalette()
palete.setColor(QPalette.Background,color)
self.setPalette(palete) if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
currentColorChanged案例
GUI学习之二十六——QColorDialog学习总结的更多相关文章
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- 深度学习(二十六)Network In Network学习笔记
深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...
- Java基础学习笔记二十六 JDBC
什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...
- Python学习(二十六)—— Django基础一
转载自:http://www.cnblogs.com/liwenzhou/p/8258992.html 一.Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的 ...
- javaweb学习总结(二十六)——jsp简单标签标签库开发(二)
一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...
- GUI学习之二十九—QFileDialog学习总结
今天学习的是文件对话框——QFileDialog 一.描述 QFileDialog提供了一个对话框,允许用户选择文件或者目录,也允许用户遍历文件系统,用以选择一个或多个文件或者目录. QFileDia ...
- GUI学习之二十五——QFontDialog学习总结
今天学习字体对话框——QFontDialog()控件. QFontDialog()是继承自QDialog()的一个子类,用来选择给定的字体(包括字体.字号.样式等) 一.构造函数 QFontDialo ...
- GUI学习之二十四——QDialog学习总结
今天学习对话框输入控件的基类(QDialog). 一.描述 是对话类窗口(字体框.颜色选择.文件选择框等)的基类. 对话框窗口是顶级窗口(就是说不包含于哪个父类的显示界面里),主要用于短期任务和与用户 ...
- java web学习总结(二十六) -------------------JSP属性范围
所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围. 一.JSP属性范围 JSP中提供了四种属性范围,四种属性范围分别指以下四种: 当前页:一个属性只能在一个页面中取得 ...
随机推荐
- 使用tushare获取股票实时分笔数据延时有多大
使用tushare获取股票实时分笔数据延时有多大 前几天分享了一段获取所有股票实时数据的代码,有用户积极留言,提出一个非常棒的问题:如果数据本生的延时非常严重,通过代码获取数据再快又有什么用呢? 一直 ...
- LeetCode_70.爬楼梯
LeetCode-70 LeetCode_70.爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正 ...
- rosbag record and play
话题录制: 录制所有发布出来的话题,此时默认将话题保存在一个以当时时间戳命名的文件夹中: $ rosbag record -a1 录制指定话题: $ rosbag record /topic1 ...
- VS2010护眼界面(护眼绿)
工具-->选项 RGB(204.232.207) “选择菜单[工具][导入和导出设置], 在弹出的“导入和导出设置向导”对话框中选择“导入选定的环境设置”, 然后根据自己的实际情况选择“是,保存 ...
- Git-Runoob:Git 分支管理
ylbtech-Git-Runoob:Git 分支管理 1.返回顶部 1. Git 分支管理 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同 ...
- 三、Zabbix-zabbix server部署-zabbix server
LNMP基础环境准备完成,进行zabbix server部署参考官方文档: [https://www.zabbix.com/documentation/3.4/zh/manual/installati ...
- [转帖]mysql.sock的作用
mysql.sock的作用 链接:http://blog.itpub.net/28602568/viewspace-1797619/ 标题:mysql.sock的作用 作者:lōττéry©版权所有[ ...
- 【监控笔记】【1.1】监控事件系列——SQL Server Profiler
声明:本系列是书目<sql server监控与诊断读书笔记> 联机丛书监控:https://docs.microsoft.com/en-us/sql/relational-database ...
- laravel框架之增刪改查
<?php namespace App\Http\Controllers\admin; use Illuminate\Http\Request as request; use App\Http\ ...
- Mysql中explain作用详解
一.MYSQL的索引 1.索引(Index):帮助Mysql高效获取数据的一种数据结构.用于提高查找效率,可以比作字典.可以简单理解为排好序的快速查找的数据结构.2.索引的作用:便于查询和排序(所以添 ...