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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

背景

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

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

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

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

(1) 自適應窗口大小;

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

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

代碼實現過程

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

1、類初始化代碼

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

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

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

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

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

3、重定義paintEvent事件

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

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

備注

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

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

歡迎加關注,共同交流。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。