實戰PyQt5 114 顏色類QColor

2021-10-12 03:27:25 字數 2903 閱讀 1991

qcolor類提供基於rgb、hsv或cmyk值的顏色。顏色通常用rgb(紅色、綠色和藍色)分量指定,但也可以用hsv(色相、飽和度和值)和cmyk(青色、品紅、黃色和黑色)分量指定。此外,可以使用顏色名稱指定顏色(顏色名稱可以是svg 1.0的任何顏色名稱)。

qcolor物件是基於rgb顏色來建立的,如果要使qcolor基於hsv(或cmyk),請使用函式tohsv()和tocmyk()來,這些函式會返回乙個所需格式qcolor物件。另外,使用靜態函式fromrgb(), fromhsv()和fromcmyk()函式可以建立相應格式的qcolor物件。或者使用convertto()函式,該函式返回所需格式的qcolor物件。也可以使用setrgb(), sethsv(), setcmyk()函式來改變顏色的格式。

可以通過將rgb字串(例如「#112233」)或argb字串(例如「#ff112233」)或顏色名稱(例如「 blue」)傳遞給setnamedcolor()函式來設定顏色。顏色名稱取自svg 1.0顏色名稱。name()函式返回的格式為「#rrggbb」顏色的名字。還可以使用setrgb(),sethsv()和setcmyk()設定顏色。要獲得較淺或較深的顏色,請分別使用lighter()和darker()函式。

isvalid()函式表示qcolor是否合法。例如,rgb顏色的rgb值超出範圍是非法的。由於效能原因,qcolor基本上不考慮非法顏色,因此,使用無效顏色的結果是無法定義的。

顏色分量可以單獨檢索,例如。用red(),hue()和cyan()可以獲得紅色,色調和青色顏色分量。還可以使用getrgb()、gethsv()和getcmyk()函式一次性檢索顏色分量的值。使用rgb顏色模型時,還可以使用rgb()訪問顏色分量。

qcolor支援浮點精度,提供所有顏色元件函式的浮點版本,例如getrgbf()、huef()和fromcmykf()。注意,由於元件是使用16位整數儲存的,因此使用setrgbf()和getrgbf()函式返回的值之間可能存在微小的偏差。

基於整數的函式取值範圍為0-255 (hue()除外,其值必須在0-359範圍內),基於浮點函式接受範圍為0.0 - 1.0的值。

qcolor還支援alpha混合,顏色的alpha通道指定透明效果,0表示完全透明的顏色,而255表示完全不透明的顏色。例如:

#指定乙個半透明的紅色

painter.setbrush(qcolor(255, 0, 0, 127))

painter.drawrect(0, 0, self.width()/2, self.height())

#指定乙個半透明的藍色

painter.setbrush(qcolor(0,0,255,127))

painter.drawrect(0, 0, self.width(), self.height()/2)

上述**產生以下顯示效果:

如果顏色的值是整數,則可以使用alpha()和setalpha()函式來檢索和設定顏色的alpha通道;如果值是qreal(雙精度),則可以使用alphaf()和setalphaf()來檢索和設定顏色。預設情況下,alpha通道設定為255(不透明)。要一次性檢索和設定所有rgb顏色分量(包括alpha通道),請使用rgba()和setrgba()函式。

測試程式使用qlabel顯示了qt內部預定義了名字的顏色,完整**如下:

import sys

from pyqt5 import qtcore, qtgui, qtwidgets

from pyqt5.qtgui import qcolor

class democolor(qwidget):

def __init__(self, parent=none):

super(democolor, self).__init__(parent)   

# 設定視窗標題

self.setwindowtitle('實戰pyqt5: qcolor預定義顏色表')      

self.initui()

def initui(self):

layout = qgridlayout()

line_count = 8 #每一行的顯示個數

index = 0

print(len(qcolor.colornames()))

for name in qcolor.colornames():

color_label = qlabel()

color_label.setminimumheight(24)

color_label.settext(name)

#設定背景色,邊框和文字顏色

stylesheet = 'qlabel'

if (qcolor(name).gethsv()[2] 

stylesheet = 'qlabel'

color_label.setstylesheet(stylesheet)

layout.addwidget(color_label, index//line_count, index % line_count)

index += 1

self.setlayout(layout)

if __name__ == '__main__':

window = democolor()

window.show()

執行結果如下圖:

qt內部預定義的顏色值

前一篇:實戰pyqt5: 113-qss+定製視窗的標題欄

PyQt學習筆記(三)切換顏色

class myclass qwidget definit self super init self.initui def initui self self.color qcolor 0,0,0 顏色配置 self.setgeometry 500,150,700,600 正常屏 self.resiz...

實戰PyQt5 041 選單控制項QMenu

在乙個gui應用中,選單項都是乙個隨處都會用到的乙個控制項項。在乙個應用中選單常以以下三種方式出現 qmenu常用方法有 qmenu類繼承關係 在前一篇文章中,演示了使用qmenubar為主視窗提供選單欄的方法,在本篇中,我們進一步完善主視窗選單。import sys from pyqt5 impo...

實戰PyQt5 004 控制項之祖QWidget

pyqt是python圖形使用者介面 graphical user inte ce,簡稱gui 應用開發中流行的圖形開發介面庫。在gui應用中,乙個典型的視窗座標系統如圖1所示 gui視窗座標示意圖 螢幕左上角為座標原點,即 0,0 點,從左到右為x軸正向,從上到下為y軸正向。整個螢幕的座標系統就用...