基于Python实现的周次查询小工具

背景

写周报需要填写周次,经常需要问别人,事不过三,不如自己做一个查询的小工具

设计思路

  • 使用python标准库datetime获取当前日期所在周次

  • 使用python标准库tkinter弹出消息框,显示周次信息

  • 使用pyInstaller将python代码打包成独立可执行文件

代码实现

import datetime  # 导入 datetime 模块,用于处理日期和时间
import tkinter as tk  # 导入 tkinter 模块,用于创建 GUI 界面
from tkinter import messagebox  # 从 tkinter 模块中导入 messagebox 类,用于显示消息框
​
# 获取当前日期和周数
today = datetime.date.today()
year = today.year
week_num = today.isocalendar()[1]
​
root = tk.Tk()  # 创建 tkinter 窗体
root.withdraw()  # 隐藏 tkinter 窗体
​
formatted_week = "%02d" % week_num  # 格式化周次
message = f"今天是{year}年{formatted_week}周!"  # 格式化消息
messagebox.showinfo(title="周次", message=message)  # 弹出消息框,显示周次信息
​
root.destroy()  # 销毁 tkinter 窗体

代码测试

运行代码,效果如下:

打包

将python代码打包成独立可执行文件

  • 安装pyinstaller库

    # 安装
    pip install pyinstaller
    # 更新
    pip install --upgrade pyinstaller
  • 添加icon文件,后缀ico

  • 添加记录版本信息的文件(week-version.txt)。格式如下(按需调整):

    • filevers=(1, 0, 0, 0): 文件版本号。

    • prodvers=(1, 0, 0, 0): 产品版本号。

    • StringStruct(u'CompanyName', u'xxxx'): 公司名称。

    • StringStruct(u'FileDescription', u'xxxx'): 文件描述。

    • StringStruct(u'FileVersion', u'1.0.0.0'): 文件版本号。

    • StringStruct(u'InternalName', u'xxxx'): 内部名称。

    • StringStruct(u'OriginalFilename', u'xxxx'): 原始文件名。

    • StringStruct(u'ProductName', u'xxxx'): 产品名称。

    • StringStruct(u'ProductVersion', u'1.0.0.0'): 产品版本号。

    VSVersionInfo(
      ffi=FixedFileInfo(
        filevers=(1, 0, 0, 0),
        prodvers=(1, 0, 0, 0),
        mask=0x3f,
        flags=0x0,
        OS=0x4,
        fileType=0x1,
        subtype=0x0,
        date=(0, 0)
      ),
      kids=[
        StringFileInfo(
          [
            StringTable(
              u'040904B0',
              [StringStruct(u'CompanyName', u'xxxx'),
               StringStruct(u'FileDescription', u'xxxx'),
               StringStruct(u'FileVersion', u'1.0.0.0'),
               StringStruct(u'InternalName', u'xxxx'),
               StringStruct(u'OriginalFilename', u'xxxx'),
               StringStruct(u'ProductName', u'xxxx'),
               StringStruct(u'ProductVersion', u'1.0.0.0')
              ]
            )
          ]
        ),
        VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
      ]
    )
  • 进入当前目录执行以下命令,根据自身情况修改命令

pyinstaller --onefile --noconsole --icon=E:\PycharmProjects\pythonProject\curr_week\icon\query_week.ico --version-file=E:\PycharmProjects\pythonProject\curr_week\version_info\week-version.txt .\query_curr_week.py
​
# --onefile: 表示将所有的依赖项和文件打包成一个单独的可执行文件,方便分发和部署。
# --noconsole: 表示生成的可执行文件不会在控制台(命令行窗口)中显示输出,适用于图形界面应用程序。
# --icon=E:\PycharmProjects\pythonProject\curr_week\icon\query_week.ico: 指定生成的可执行文件的图标文件为 query_week.ico,该图标文件位于指定路径下。
# --version-file=E:\PycharmProjects\pythonProject\curr_week\version_info\week-version.txt: 指定版本信息文件为 week-version.txt,该版本信息文件用于在生成的可执行文件的资源信息中包含版本号等信息。
# .\query_curr_week.py: 指定要打包的 Python 脚本文件为 query_curr_week.py,.\表示当前目录(可以省略)。
  • 命令执行完成后当前目录下会生成dist文件夹,内部有可执行文件(我这有个问题,需要重命名文件,图标才会显示)

最终效果

周次查询