Python是一種面向對象的高級動態程式語言,相對於其它如C/C++語言,具有上手快、代碼量少、開發效率高等特點,Qt是跨平臺的C++圖形用戶界面應用程式開發框架,是當前主流的GUI開發工具之一,其在Python下的綁定是PyQt庫。使用「Python+PyQt」架構編寫應用軟體,可以做到在兼顧軟體運行效率的前提下,也可以大大節省開發者的時間成本。
關於自繪控制項或自定義控制項的編程方法,目前能找到的資料大多是C++語言下Qt的例子,而直接使用PyQt實現的資料很少,這兒給出一個在Python語言中使用PyQt庫自定義不停旋轉的圓控制項的例子。
控制項例子說明
代碼實現後的控制項運行界面如下圖所示:
上圖中顯示了一個不停旋轉的圓,圓內部是藍白顏色交叉顯示的四部分扇形區域,外圈為灰色的圓形帶。
代碼實現過程
在代碼實現中,繼承於PyQt的QWidget基類,定義了一個旋轉的圓控制項類----RotateCircleWidget,在該類中重定義paintEvent事件函數,在該函數內部實現圓控制項的外觀顯示。調用定時器函數實現其不停旋轉功能。下面逐步說明主要的代碼實現方法。
1、類的初始化
初始化每次旋轉的角度變量,定義定時器,綁定超時函數及啟動定時器,設置每隔50ms旋轉一次,代碼如下圖所示:
2、重定義paintEvent事件
這是自繪旋轉圓控制項中代碼主要實現的地方,定義了控制項在不同情況下的外觀,這兒請參考注釋,不作詳細說明了,主要代碼如下圖所示:
3、定時器超時事件
在定時器的超時事件中,每次旋轉的角度變量自加2,調用update()函數實現控制項外觀的不停刷新,達到旋轉的效果。主要代碼如下圖所示:
控制項測試例子
調用上面的控制項類,將其放到主窗口中,即可看到本文開頭不停旋轉的圓運行界面。主要實現代碼如下圖所示:
備註
PyQt中大部分函數同C++平臺下Qt的函數完全一樣,只是在Python和C++下語法有所不同,如變量的定義、賦值等,使用Python+PyQt框架,實現同樣的功能,代碼量要遠遠小於C++平臺下的代碼量,如本例加上注釋、空行等才不足80行代碼,大大節約了編程時間。
可參考視頻演示:python+pyqt自定義控制項:旋轉圓控制項
歡迎加關注,共同交流。