日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯

發(fā)布時間:2025/3/19 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

PyQt是Qt界面庫在Python下的綁定庫,為熟悉或喜歡Qt的開發(fā)者在Python語言下編寫GUI界面程序提供了極大的便利,關(guān)于自定義控件前面已經(jīng)給出了兩個例子,分別是自定義顏色指示框控件和自定義導(dǎo)航欄控件,這次給出一個在Python語言中使用PyQt庫自定義圓形指示燈控件的例子。

自定義圓形指示燈控件例子說明

先看一下調(diào)用該圓形指示燈控件時運行界面的樣子,如下圖所示:

上圖中,左側(cè)部分包括了:設(shè)置圓形指示燈控件的各種屬性,如設(shè)置顏色、半徑等信息;恢復(fù)默認屬性設(shè)置;啟動/暫停跑馬燈效果等。右側(cè)上半部分是自定義的單個圓形指示燈控件,右側(cè)下半部分使用了八個指示燈控件,用以模擬跑馬燈的效果。該圓形指示燈控件具有如下特點:

(1) 自適應(yīng)窗口大小;

(2) 可單獨對各種屬性如顏色、半徑等進行設(shè)置;

(3) 對每個屬性提供了默認值

代碼實現(xiàn)過程

根據(jù)上面的特點,在PyQt中實現(xiàn)了一個基于QAbstractButton的圓形指示燈控件類——MyLed,下面逐步說明主要的代碼實現(xiàn)方法。

1、類初始化代碼

這部分主要設(shè)置圓形指示燈控件屬性的初始值,設(shè)置最小大小尺寸等,主要代碼如下圖所示:

這兒在類中定義了一個“_attributes”字典變量(可理解為私有變量),里面存儲了該控件的所有屬性及初始值,使用字典的update()函數(shù),將其更新到self.attributes成員變量中,這樣做的好處是可以隨時使用update()函數(shù)將控件的屬性恢復(fù)到默認設(shè)置。

2、類方法(成員函數(shù))代碼

主要包括兩個函數(shù),“setLedDefaultOption”和“setLedOption”,前者將所有屬性設(shè)置為默認值,后者設(shè)置單個屬性值,主要代碼如下圖所示:

需要說明的是,對控件屬性進行修改后,要及時調(diào)用update()函數(shù),以強制使控件進行外觀刷新。

3、重定義paintEvent事件

這是實現(xiàn)圓形指示燈控件外觀的主要代碼,定義了控件在不同狀態(tài)(真、假狀態(tài))、不同屬性值下的外觀,主要代碼如下圖所示:

這段代碼中有詳細的注釋,主要包括畫邊框外圈、邊框內(nèi)圈及畫內(nèi)圓等操作,為呈現(xiàn)立體感,簡單的使用了輻射漸變畫刷QRadialGradient類。

備注

調(diào)用上面的圓形指示燈控件類,將其放到主窗口中,即可看到本文開頭的運行界面。測試代碼例子較長,難度不大,調(diào)用該類的成員函數(shù),可在界面上對各個屬性值分別進行設(shè)置,大家可自行實現(xiàn)。

在模擬真實指示燈外觀方面,本例只是粗略的使用了輻射漸變畫刷,大家可以在paintEvent事件中修改相關(guān)代碼,實現(xiàn)更真實的外觀。另外,在這個例子的基礎(chǔ)上也可進一步改進,如實現(xiàn)方形指示燈或其它形狀外觀的指示燈控件。

歡迎加關(guān)注,共同交流。

總結(jié)

以上是生活随笔為你收集整理的python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。