利用PyQT5日期控件制作一個(gè)小日歷
介紹
日歷的制作比較簡(jiǎn)單,因?yàn)閜yqt5已經(jīng)自帶了相關(guān)的日期控件,只需要明白如何調(diào)用再加上比較個(gè)性化的功能,這個(gè)日歷的小控件就制作完成了。
日歷實(shí)現(xiàn)代碼量不多,具體效果如下圖
主要代碼
在制作過(guò)程中使用到的python模塊包說(shuō)明:
from PyQt5.QtWidgets import * # 窗口組件 from PyQt5.QtCore import * # 核心組件、日歷組件就是在這個(gè)庫(kù) import sys # 操作系統(tǒng)處理庫(kù)
在小日歷的制作過(guò)程中只使用了一個(gè)槽函數(shù),就是將當(dāng)前選中的日歷時(shí)間進(jìn)行字符串的格式化以后再顯示到下面的標(biāo)簽控件上。只需要一句代碼就可以實(shí)現(xiàn)了。
def calender_show(self): ''' 當(dāng)前日歷展示的槽函數(shù) :return: ''' selected = self.calender_.selectedDate() self.current_date.setText('您當(dāng)前選中的日期是:{}'.format(selected.toString("yyyy-MM-dd dddd")))
在每個(gè) GUI 的應(yīng)用中代碼量比較多的還是 UI 界面的使用上面。下面就是相關(guān)控件的初始化和顯示過(guò)程。
def init_ui(self): ''' 日歷UI界面函數(shù) :return: ''' self.setWindowTitle("我的小日歷") # 設(shè)置標(biāo)題 vbox = QVBoxLayout() # 創(chuàng)建垂直布局 '''創(chuàng)建日歷控件對(duì)象''' self.calender_ = QCalendarWidget() self.calender_.setGridVisible(True) # 設(shè)置日期控件使用網(wǎng)格布局 self.calender_.setMinimumDate(QDate(1970, 1, 1)) # 設(shè)置最小日期 self.calender_.setMaximumDate(QDate(3200, 1, 1)) # 設(shè)置最大日期 self.calender_.setFirstDayOfWeek(Qt.Monday) # 設(shè)置星期一為每周的第一天 self.calender_.clicked[QDate].connect(self.calender_show) vbox.addWidget(self.calender_) # 將日歷控件加入垂直布局 self.current_date = QLabel() self.calender_show() vbox.addWidget(self.current_date) # 將顯示標(biāo)簽加入布局 self.setLayout(vbox) # 將垂直布局作為主布局加入
補(bǔ)充
Python也可以直接生成簡(jiǎn)單的日歷效果
以下是主要代碼
# 輸出日歷界面 print("*" * 50) print("歡迎使用【天天日歷】v2.0") # 接收用戶(hù)輸入的年份 year_int = int(input("請(qǐng)輸入年份:\n")) # 定義全局變量用于記錄天數(shù)總和 sum = 0 if year_int >= 1917: month_int = int(input("請(qǐng)輸入月份\n")) for year_every in range(1917, year_int): # 遍歷從1917年到用戶(hù)輸入年份 用于計(jì)算到用戶(hù)所輸入年份共多少天 if (year_every % 4 == 0 and year_every % 100 != 0) or \ year_every % 400 == 0: # 如果是瑞年則366天否則平年365天 sum += 366 else: sum += 365 for month_every in range(1, month_int): # 遍歷月份用于計(jì)算由1月份到用戶(hù)輸入月份的總天數(shù) if month_every == 4 or month_every == 6 or \ month_every == 9 or month_every == 11: sum += 30 elif month_every == 2: if (year_int % 1 == 0 and year_int % 100 != 0) or \ year_int % 400 == 0: sum += 29 else: sum += 28 else: sum += 31 # 定義變量用于定義每個(gè)月的天數(shù) day = 0 # 定義變量 用于計(jì)算當(dāng)月第一天為周幾 weak = sum % 7 print("日\(chéng)t一\t二\t三\t四\t五\t六") # 判斷用戶(hù)輸入月份為多少天 if month_int == 4 or month_int == 6 or month_int == 9 or month_int == 11: day = 30 elif month_int == 2: if (year_int % 4 == 0 and year_int % 100 != 0) or \ year_int % 400 == 0: day = 29 else: day = 28 else: day = 31 # 輸出指定空格數(shù)讓第一天與周幾對(duì)齊 print("\t"*weak,end="") i = 1 while i <= day: # 遍歷用戶(hù)查詢(xún)?cè)路? weakend = ((sum+i)-1)% 7 # 如果余數(shù)為6 換行否則輸出空格 if weakend == 6: print("%d" %i) else: print(i,end="\t") i += 1 else: print("系統(tǒng)正在維護(hù)暫時(shí)無(wú)法獲取1917年之前的信息")
到此這篇關(guān)于利用PyQT5日期控件制作一個(gè)小日歷的文章就介紹到這了,更多相關(guān)PyQT5日歷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch 實(shí)現(xiàn)自定義參數(shù)層的例子
今天小編就為大家發(fā)信息一篇Pytorch 實(shí)現(xiàn)自定義參數(shù)層的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python模擬鍵盤(pán)輸入自動(dòng)登錄TGP
這篇文章主要介紹了Python模擬鍵盤(pán)輸入自動(dòng)登錄TGP的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-11-11python中Tkinter 窗口之輸入框和文本框的實(shí)現(xiàn)
這篇文章主要介紹了python中Tkinter 窗口之輸入框和文本框的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python清洗疫情歷史數(shù)據(jù)的過(guò)程詳解
這篇文章主要介紹了python清洗疫情歷史數(shù)據(jù),包括數(shù)據(jù)獲取方法及使用python讀取csv的詳細(xì)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05python def 定義函數(shù),調(diào)用函數(shù)方式
這篇文章主要介紹了python def 定義函數(shù),調(diào)用函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06查看keras的默認(rèn)backend實(shí)現(xiàn)方式
這篇文章主要介紹了查看keras的默認(rèn)backend實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06詳解利用python-highcharts庫(kù)繪制交互式可視化圖表
本文主要和大家分享一個(gè)超強(qiáng)交互式可視化繪制工具-python-highcharts。python-highcharts就是使用Python進(jìn)行Highcharts項(xiàng)目繪制,簡(jiǎn)單的說(shuō)就是實(shí)現(xiàn)Python和Javascript之間的簡(jiǎn)單轉(zhuǎn)換層,感興趣的可以了解一下2022-03-03Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下2024-01-01