https://github.com/howarder3/ironman2021_PyQt5_photoshop/tree/main/day23_QColorDialog
我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构下去进行程序设计
如果还不清楚我程序设计的逻辑 (UI.py、controller.py、start.py 分别在干麻)
建议先阅读 day5 文章後再来阅读此文。
https://www.wongwonggoods.com/python/pyqt5-5/
在 mac, windows, linux 上都会有系统预设的调色盘 QColorDialog,
随着使用系统不同也会得到不同的调色盘。
而我们今天要藉由这个工具来帮助我们挑选颜色。
我们修改 Qframe 的属性
这样我们就能建立一个明确的边框
关於 Qframe 的属性,可以参考这边查询
延伸阅读:QFrame类
文内提供的参考图:
pyuic5 -x day23.ui -o UI.py
一样,这程序只有介面 (视觉上的呈现),没有任何互动功能
python UI.py
我们先将 label 内的文字设为 "QColorDialog",
然後连结 pushButton 至 set_label_color 这个 function
from PyQt5 import QtCore
from PyQt5.QtWidgets import QMainWindow, QColorDialog
from UI import Ui_MainWindow
class MainWindow_controller(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setup_control()
def setup_control(self):
self.ui.label.setText("QColorDialog")
self.ui.pushButton.clicked.connect(self.set_label_color)
我们只要呼叫 QColorDialog.getColor(),就会呼叫系统内建的调色盘,
之後我们可以透过
print(color.name()):会得到 CSS 值 #ff5b87
print(color.red(), color.green(), color.blue()):会得到 RGB 值 (0~255) # 255 91 135
self.ui.label.setStyleSheet('background-color:rgb({});'.format(strRGB)):直接设定背景颜色,需先转换格式为 strRGB
def set_label_color(self):
color = QColorDialog.getColor() # OpenColorDialog
if color.isValid():
print(color.name()) #ff5b87
print(color.red(), color.green(), color.blue()) # 255 91 135
r, g, b = color.red(), color.green(), color.blue()
strRGB = ('{:^3d}, {:^3d}, {:^3d}'.format(r, g, b))
self.ui.label.setStyleSheet('background-color:rgb({});'.format(strRGB))
另外依照我们目前的写法,我们也可以在 terminal 取得我们填色的 RGB 与 CSS,
之後我们可以使用这个值来继续做颜色的操作。
★ 本文也同步发於我的个人网站(会有内容目录与显示各个小节,阅读起来更流畅):【PyQt5】Day 23 - 使用系统内建的调色盘 QColorDialog,来替我们选择颜色 QColor (Color Picker)
>>: 30天学会 Python-Day22: 自动化的偷吃步
前言 接下来将会聊聊如何使用 Python 做到一些档案处理的部分,例如:新增档案、写入资料到特定档...
今天稍微回头update一下musl这边的porting状况。 之前遇到message queue跟...
题号:74 标题:Search a 2D Matrix 难度:Medium Write an eff...
Windows Web Form(C#) import Web API 步骤一 :先新增或使...
在这篇文章中,我们要来认识一个函式库: Redux Toolkit。 Redux Toolkit 官...