1.python代码
import tkinter as tk
from datetime import datetime, timedelta
import pytz
from tkinter import ttk
def convert_timezone():
source_timezone = timezone_dict[source_tz_combobox.get()]
target_timezone = timezone_dict[target_tz_combobox.get()]
input_time = datetime.strptime(entry1_1.get(), "%Y-%m-%d %H:%M:%S")
try:
source_tz = pytz.timezone(source_timezone)
target_tz = pytz.timezone(target_timezone)
except pytz.UnknownTimeZoneError as e:
entry6_1.delete(0, tk.END)
entry6_1.insert(0, f"错误: 不支持的时区 - {source_timezone} 或 {target_timezone}")
return
source_time = source_tz.localize(input_time)
target_time = source_time.astimezone(target_tz)
entry6_1.delete(0, tk.END)
entry6_1.insert(0, target_time.strftime('%Y-%m-%d %H:%M:%S'))
root = tk.Tk()
root.title("时区转换器")
root.geometry('400x200')
# 输入时间
frame1 = tk.Frame(root, pady=5)
frame1.pack()
label1_1 = tk.Label(frame1, text="输入时间")
entry1_1 = tk.Entry(frame1)
label1_1.pack(side=tk.LEFT)
entry1_1.pack(side=tk.LEFT)
# 时区选择 Combobox
timezone_dict = {'CN/CST-中国上海': 'Asia/Shanghai', 'SGT-新加坡': 'Asia/Singapore', 'JST-脚盆鸡': 'Asia/Tokyo', 'IST-印度': 'Asia/Kolkata'}
# 源时区
frame2 = tk.Frame(root, pady=5)
frame2.pack()
label2_1 = tk.Label(frame2, text="源时区")
source_tz_combobox = ttk.Combobox(frame2, values=list(timezone_dict.keys()))
label2_1.pack(side=tk.LEFT)
source_tz_combobox.pack(side=tk.LEFT)
# 目标时区
frame3 = tk.Frame(root, pady=5)
frame3.pack()
label2_1 = tk.Label(frame3, text="目标时区")
target_tz_combobox = ttk.Combobox(frame3, values=list(timezone_dict.keys()))
label2_1.pack(side=tk.LEFT)
target_tz_combobox.pack(side=tk.LEFT)
# 转换按钮
frame4 = tk.Frame(root, pady=5)
frame4.pack()
convert_button = tk.Button(frame4, text="转换", command=convert_timezone)
convert_button.pack()
# 显示结果的 Label
frame5 = tk.Frame(root, pady=5)
frame5.pack()
#
frame6 = tk.Frame(root, pady=5)
frame6.pack()
label6_1 = tk.Label(frame6, text="转换后的时间")
entry6_1 = tk.Entry(frame6)
label6_1.pack(side=tk.LEFT)
entry6_1.pack(side=tk.LEFT)
root.mainloop()
2.打包命令
pyinstaller --noconsole --icon=xxx.ico time_zone.py -n timeZone -F