python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯
背景
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语言需要变量生明吗_pyth
- 下一篇: unity fixedupdate_un