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中自定义圆形指示灯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语言需要变量生明吗_pyth
- 下一篇: 怎么安装python2.7_如何在Win