PyQT5例項 2 桌面LCD電子時鐘

2021-08-22 13:49:12 字數 3285 閱讀 5622

今天,我要記錄的是用pyqt5寫的乙個桌面電子時鐘,涉及到pyqt定時器,lcd顯示控制項,pyqt5獲取時間等內容,單擊滑鼠右鍵會關閉此時鐘,效果圖如下圖

執行環境:python35

開發環境: eclipse-photon +pydev

題外話: eclipse真棒,eclipse**好

首先,需要設計電子時鐘的類。姑且命名為digitalclock,繼承自qlcdnumber

然後,要編寫main函式,main函式如下

'''

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()

接下來是類digitalclock的詳細**

這是乙個無邊框的窗體,

因此要使用函式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 第三方...