今天,我要記錄的是用pyqt5寫的乙個桌面電子時鐘,涉及到pyqt定時器,lcd顯示控制項,pyqt5獲取時間等內容,單擊滑鼠右鍵會關閉此時鐘,效果圖如下圖
執行環境:python35
開發環境: eclipse-photon +pydev
題外話: eclipse真棒,eclipse**好
首先,需要設計電子時鐘的類。姑且命名為digitalclock,繼承自qlcdnumber
然後,要編寫main函式,main函式如下
接下來是類digitalclock的詳細**'''
created on 2018-08-09 22:39
@author: freedom
'''import sys
from digitalclock import digitalclock
def main():
clock = digitalclock(none) #新建電子時鐘
clock.show() #顯示電子時鐘
if __name__ == '__main__':
main()
這是乙個無邊框的窗體,
因此要使用函式setwindowflags(qt.framelesswindowhint)來取消邊框,
但是,當邊框消失時,介面會無法移動或者關閉,因此,要重寫兩個函式來實現滑鼠拖動時鐘已經關閉時鐘,分別是
mousepressevent(self, mouseevent)
mousemoveevent(self, mouseevent)
鑑於寫的是電子時鐘,因此,核心邏輯就是新建乙個qtimer例項,即qt定時器物件,每隔1s鐘獲取一次當前的時間並以字串的形式顯示。當然,要呼叫qlcdnumber專用的顯示函式display才能有特效。
'''
created on 2023年8月9日
@author: freedom
'''from pyqt5.qtwidgets import qlcdnumber
from pyqt5.qt import qpoint, qpalette, qtimer, qtime, qrect
from pyqt5.qtcore import qt
class digitalclock(qlcdnumber):
def __init__(self, parent=none):
'''constructor
'''super().__init__(parent)
self.__initdata() #初始化類的資料
self.__initview() #初始化介面
def __initdata(self):
#初始化資料
self.__showcolon = true #是否顯示時間如[12:07]中的冒號,用於冒號的閃爍
self.__dragposition = qpoint(0,0) #用於儲存滑鼠相對於電子時鐘左上角的偏移值
self.__timer = qtimer(self) #新建乙個定時器
#關聯timeout訊號和showtime函式,每當定時器過了指定時間間隔,就會呼叫showtime函式
self.__timer.timeout.connect(self.showtime)
self.__timer.start(1000) #設定定時間隔為1000ms即1s,並啟動定時器
def __initview(self):
#初始化介面
palette = qpalette() #新建調色盤
palette.setcolor(qpalette.window, qt.blue) #將調色盤中的窗體背景色設定為藍色
self.setpalette(palette) #在本窗體載入此調色盤
self.setwindowflags(qt.framelesswindowhint) #設定窗體為無邊框模式
self.setwindowopacity(0.5) #設定窗體的透明度為0.5
self.resize(200,60) #設定介面尺寸,寬150px,高60px
self.setnumdigits(8) #允許顯示8個字元 原因,自己數右邊幾個字元 【hh:mm:ss】
self.showtime() #初始化時間的顯示
def showtime(self):
#更新時間的顯示
time = qtime.currenttime() #獲取當前時間
time_text = time.tostring(qt.defaultlocalelongdate) #獲取hh:mm:ss格式的時間,在中國獲取後是這個格式,其他國家我不知道,如果有土豪願意送我去外國旅行的話我就可以試一試
#冒號閃爍
if self.__showcolon == true:
self.__showcolon = false
else:
time_text = time_text.replace(':',' ')
self.__showcolon = true
self.display(time_text) #顯示時間
def mousepressevent(self, mouseevent):
#滑鼠按下事件
btn_code = mouseevent.button()
if btn_code == qt.leftbutton:
#如果是滑鼠左鍵按下
self.__dragposition = mouseevent.globalpos() - self.framegeometry().topleft()
print(self.__dragposition)
mouseevent.accept()
elif btn_code == qt.rightbutton:
print("it will close")
self.close() #滑鼠右鍵關閉時鐘
def mousemoveevent(self, mouseevent):
#滑鼠移動事件
#在滑鼠拖動下,使用move函式移動電子時鐘
#move的引數是qpoint型別,可理解為形如(x,y)的向量
self.move(mouseevent.globalpos()-self.__dragposition)
mouseevent.accept()
HTML 5 桌面提醒
notification.requestpermission 該方法將向使用者請求詢問顯示提示框的許可權。返回值有三個 default 預設 granted 允許 denied 拒絕 var notify new notification title,options 建構函式,兩個引數為title ...
pyqt5執行緒使用例項QThreadPool
順序 qwidget qthread 主線程,主要使用者管理執行緒 qobject 建立執行緒在這裡建立qthreadpool執行緒設定 qrunnable 主要執行緒邏輯 例項 效果圖 源 wx 18550030945 coding utf 8 import sys 這裡執行核心 class th...
PyQt5 介面背景設定
palette 調色盤 顏料 專題 qss 這裡mainwindow為例項化出的窗體名 例項名 qss style mainwindow mainwindow.setstylesheet qss style 多級視窗呼叫時 外部qss設定的渲染路徑 可能會不起作用,此時可以使用palette 第三方...