利用PyQT5日期控件制作一个小日历

 更新时间:2022年01月07日 08:32:27   作者:Python集中营  
这篇文章主要介绍了利用PyQT5的日期控件制作一个小日历,因为pyqt5已经自带了相关的日期控件,只需要明白如何调用再加上比较个性化的功能,这个日历的小控件就制作完成了。需要的可以参考一下

介绍

日历的制作比较简单,因为pyqt5已经自带了相关的日期控件,只需要明白如何调用再加上比较个性化的功能,这个日历的小控件就制作完成了。

file

日历实现代码量不多,具体效果如下图

file

主要代码

在制作过程中使用到的python模块包说明:

from PyQt5.QtWidgets import *  # 窗口组件

from PyQt5.QtCore import *  # 核心组件、日历组件就是在这个库

import sys  # 操作系统处理库

在小日历的制作过程中只使用了一个槽函数,就是将当前选中的日历时间进行字符串的格式化以后再显示到下面的标签控件上。只需要一句代码就可以实现了。

def calender_show(self):
        '''
        当前日历展示的槽函数
        :return:
        '''
        selected = self.calender_.selectedDate()
        self.current_date.setText('您当前选中的日期是:{}'.format(selected.toString("yyyy-MM-dd dddd")))

在每个 GUI 的应用中代码量比较多的还是 UI 界面的使用上面。下面就是相关控件的初始化和显示过程。

    def init_ui(self):
        '''
        日历UI界面函数
        :return:
        '''
        self.setWindowTitle("我的小日历")  # 设置标题

        vbox = QVBoxLayout()  # 创建垂直布局

        '''创建日历控件对象'''
        self.calender_ = QCalendarWidget()
        self.calender_.setGridVisible(True)  # 设置日期控件使用网格布局
        self.calender_.setMinimumDate(QDate(1970, 1, 1))  # 设置最小日期
        self.calender_.setMaximumDate(QDate(3200, 1, 1))  # 设置最大日期
        self.calender_.setFirstDayOfWeek(Qt.Monday)  # 设置星期一为每周的第一天
        self.calender_.clicked[QDate].connect(self.calender_show)

        vbox.addWidget(self.calender_)  # 将日历控件加入垂直布局

        self.current_date = QLabel()
        self.calender_show()

        vbox.addWidget(self.current_date)  # 将显示标签加入布局

        self.setLayout(vbox)  # 将垂直布局作为主布局加入

补充

Python也可以直接生成简单的日历效果

以下是主要代码

# 输出日历界面

print("*" * 50)
print("欢迎使用【天天日历】v2.0")

# 接收用户输入的年份
year_int = int(input("请输入年份:\n"))
# 定义全局变量用于记录天数总和
sum = 0
if year_int >= 1917:
  month_int = int(input("请输入月份\n"))
  for year_every in range(1917, year_int): # 遍历从1917年到用户输入年份 用于计算到用户所输入年份共多少天
    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): # 遍历月份用于计算由1月份到用户输入月份的总天数
    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
  # 定义变量用于定义每个月的天数
  day = 0
  # 定义变量 用于计算当月第一天为周几
  weak = sum % 7

  print("日\t一\t二\t三\t四\t五\t六")
  # 判断用户输入月份为多少天
  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
  # 输出指定空格数让第一天与周几对齐
  print("\t"*weak,end="")
  i = 1
  while i <= day: # 遍历用户查询月份
    weakend = ((sum+i)-1)% 7
    # 如果余数为6 换行否则输出空格
    if weakend == 6:
      print("%d" %i)
    else:
      print(i,end="\t")
    i += 1
else:
  print("系统正在维护暂时无法获取1917年之前的信息")

到此这篇关于利用PyQT5日期控件制作一个小日历的文章就介绍到这了,更多相关PyQT5日历内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用pandas读取csv文件的指定列方法

    使用pandas读取csv文件的指定列方法

    下面小编就为大家分享一篇使用pandas读取csv文件的指定列方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Django 框架模型操作入门教程

    Django 框架模型操作入门教程

    这篇文章主要介绍了Django 框架模型操作,结合实例形式分析了Django框架相关的数据库配置、数据增删改查等操作技巧,需要的朋友可以参考下
    2019-11-11
  • python技巧分享Excel创建和修改

    python技巧分享Excel创建和修改

    这篇文章主要介绍了python技巧分享Excel创建和修改,openpyxl是一个读写Excel文档的Python库,能够同时读取和修改Excel文档。下面来看下文详细介绍,需要的小伙伴可以参考一下
    2022-02-02
  • window下eclipse安装python插件教程

    window下eclipse安装python插件教程

    这篇文章主要为大家详细介绍了window下eclipse安装python插件教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 基于Python实现天天酷跑功能

    基于Python实现天天酷跑功能

    这篇文章主要介绍了基于Python实现天天酷跑功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • python中pathlib模块的基本用法与总结

    python中pathlib模块的基本用法与总结

    这篇文章主要给大家介绍了关于python中pathlib模块的基本用法与总结的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • 布隆过滤器的概述及Python实现方法

    布隆过滤器的概述及Python实现方法

    布隆过滤器是一种概率空间高效的数据结构。它与hashmap非常相似,用于检索一个元素是否在一个集合中。这篇文章主要介绍了布隆过滤器的概述及Python实现,需要的朋友可以参考下
    2019-12-12
  • Python+Selenium实现无头浏览器网页截图

    Python+Selenium实现无头浏览器网页截图

    这篇文章主要为大家详细介绍了Python+Selenium实现无头浏览器网页截图的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • win10安装python的全过程

    win10安装python的全过程

    这篇文章主要介绍了win10安装python的全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 三步实现Django Paginator分页的方法

    三步实现Django Paginator分页的方法

    这篇文章主要介绍了三步实现Django Paginator分页的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06

最新评论