import tkinter import time def gettime(): day = time.strftime("%Y:%m:%d %A ") timestr = time.strftime("%H:%M:%S") op.configure(text = day) lb.configure(text=timestr) root.after(1000,gettime) root = tkinter.Tk() root.title('电子时钟') lb = tkinter.Label(root,text='',fg='blue',font=("黑体",80)) op = tkinter.Label(root,text='',fg='red',font=("黑体",80)) op.pack() lb.pack() gettime() root.mainloop()
时间: 2024-04-02 08:31:42 浏览: 90
这是一个使用 Python 和 tkinter 库创建数字时钟的程序,可以显示当前的时间和日期。程序使用 time 模块获取当前的时间和日期信息,将其格式化为字符串,并在两个 tkinter 标签中显示。gettime() 函数使用 root.after() 方法每秒递归调用,实时更新时间显示。使用 Tk() 方法创建 tkinter 窗口,并使用两个标签显示时间和日期信息。使用 mainloop() 方法运行程序。
具体实现过程为:先导入 tkinter 和 time 模块,然后定义一个 gettime() 函数,该函数使用 time 模块获取当前的日期和时间信息,并将其分别格式化为字符串 day 和 timestr。然后,将 day 和 timestr 分别显示在两个 tkinter 标签 op 和 lb 中,并使用 root.after() 方法每秒递归调用 gettime() 函数,以实现实时更新时间显示。
最后,使用 Tk() 方法创建 tkinter 窗口,并在窗口中显示 op 和 lb 两个标签。使用 gettime() 函数更新时间显示,并使用 mainloop() 方法运行程序。
相关问题
請你幫我這個鬧鐘做成GUI窗口from datetime import datetime from playsound import playsound # 输入 alarm_time = input("请输入闹钟时间, 示例: 09:50:00 am\n") # 时 alarm_hour = alarm_time[0:2] # 分 alarm_minute = alarm_time[3:5] # 秒 alarm_seconds = alarm_time[6:8] # 上午或下午 alarm_period = alarm_time[9:11].upper() print("完成闹钟设置..") while True: now = datetime.now() current_hour = now.strftime("%I") current_minute = now.strftime("%M") current_seconds = now.strftime("%S") current_period = now.strftime("%p") # 时间判断 if alarm_period == current_period: if alarm_hour == current_hour: if alarm_minute == current_minute: if alarm_seconds == current_seconds: print("起来啦!") # 闹钟铃声 playsound('audio.mp3') break
好的,我可以为您创建一个简单的GUI窗口,让您可以轻松地设置闹钟时间和选择铃声。您可以使用Python的tkinter库来创建GUI窗口。以下是一个可能的示例代码:
```python
from datetime import datetime
from playsound import playsound
import tkinter as tk
from tkinter import filedialog
def set_alarm():
alarm_time = entry_time.get() # 获取输入的闹钟时间
alarm_sound = entry_sound.get() # 获取选择的铃声
# 解析时间
alarm_hour = alarm_time[0:2]
alarm_minute = alarm_time[3:5]
alarm_seconds = alarm_time[6:8]
alarm_period = alarm_time[9:11].upper()
# 进入闹钟循环
while True:
now = datetime.now()
current_hour = now.strftime("%I")
current_minute = now.strftime("%M")
current_seconds = now.strftime("%S")
current_period = now.strftime("%p")
# 时间判断
if alarm_period == current_period:
if alarm_hour == current_hour:
if alarm_minute == current_minute:
if alarm_seconds == current_seconds:
print("起床了!")
# 播放闹钟铃声
playsound(alarm_sound)
break
def choose_sound():
# 打开文件选择对话框
file_path = filedialog.askopenfilename()
entry_sound.delete(0, tk.END) # 清空文本框
entry_sound.insert(0, file_path) # 显示选择的文件路径
# 创建窗口
root = tk.Tk()
root.title("闹钟")
# 创建标签和输入框
label_time = tk.Label(root, text="闹钟时间(示例:09:50:00 AM)")
label_time.pack()
entry_time = tk.Entry(root)
entry_time.pack()
label_sound = tk.Label(root, text="选择铃声(mp3格式)")
label_sound.pack()
entry_sound = tk.Entry(root)
entry_sound.pack()
# 创建选择文件按钮
button_choose_sound = tk.Button(root, text="选择文件", command=choose_sound)
button_choose_sound.pack()
# 创建设置闹钟按钮
button_set_alarm = tk.Button(root, text="设置闹钟", command=set_alarm)
button_set_alarm.pack()
# 进入主循环
root.mainloop()
```
这个代码使用了两个标签和两个输入框,让用户可以输入闹钟时间和选择闹钟铃声。选择铃声的功能使用了Python的文件选择对话框。当用户点击“设置闹钟”按钮时,程序会进入闹钟循环,直到闹钟时间到达并播放铃声。注意,这个示例代码并没有完全按照您提供的代码实现,但是可以实现相同的功能。
import time # 获取当前时间并格式化 current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 在终端输出当前时间 print("当前时间:", current_time) # 引入Tkinter库 import tkinter as tk # 创建一个窗口 window = tk.Tk() window.geometry('300x300') window.title('电子日历') # 在窗口中添加一个Label,显示当前日期和时间 current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) time_label = tk.Label(window, text=current_time) time_label.pack() # 添加一个按钮,点击后可以显示当天相隔的天数 def show_diff_days(): today = datetime.datetime.today() selected_day = calendar.selection_get() diff = (selected_day - today).days tk.messagebox.showinfo('相隔天数', f'距离今天相隔{diff}天') diff_btn = tk.Button(window, text='计算与今天相隔天数', command=show_diff_days) diff_btn.pack() # 在窗口中添加一个日历控件,让用户可以选择日期 import calendar import datetime from tkinter import messagebox as messagebox def show_selected_date(): selected_day = calendar.selection_get() messagebox.showinfo('选择日期', f'您选择了日期:{selected_day}') calendar = calendar.Calendar(window) calendar.pack() ok_btn = tk.Button(window, text='确认', command=show_selected_date) ok_btn.pack() # 运行窗口 window.mainloop() # 引入SQLite3库 import sqlite3 # 创建或连接到数据库 conn = sqlite3.connect('calendar.db') # 创建用户事件表格 conn.execute('''CREATE TABLE events (ID INTEGER PRIMARY KEY AUTOINCREMENT, DATE TEXT NOT NULL, EVENT TEXT NOT NULL, REMIND_TIME TEXT);''') # 在表格中插入用户事件数据 def add_event(date, event, remind_time): conn.execute(f"INSERT INTO events (DATE,EVENT,REMIND_TIME) \ VALUES ('{date}','{event}','{remind_time}')") conn.commit()
这段代码是一个完整的电子日历程序,包含了当前时间显示、日历控件、事件添加等功能,但是在添加事件的函数`add_event()`中,SQL语句直接使用了字符串拼接,存在SQL注入的风险,建议使用参数化查询的方式来避免这个问题:
```python
# 在表格中插入用户事件数据
def add_event(date, event, remind_time):
conn.execute("INSERT INTO events (DATE,EVENT,REMIND_TIME) VALUES (?,?,?)", (date, event, remind_time))
conn.commit()
```
另外,这段代码在使用`messagebox`时,应该使用`tk.messagebox`来避免命名冲突:
```python
from tkinter import messagebox as tk_messagebox
def show_selected_date():
selected_day = calendar.selection_get()
tk_messagebox.showinfo('选择日期', f'您选择了日期:{selected_day}')
```
综上所述,以下是经过修改后的代码:
```python
import time
import tkinter as tk
import datetime
import calendar
import sqlite3
from tkinter import messagebox as tk_messagebox
# 获取当前时间并格式化
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 在终端输出当前时间
print("当前时间:", current_time)
# 创建一个窗口
window = tk.Tk()
window.geometry('300x300')
window.title('电子日历')
# 在窗口中添加一个Label,显示当前日期和时间
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
time_label = tk.Label(window, text=current_time)
time_label.pack()
# 添加一个按钮,点击后可以显示当天相隔的天数
def show_diff_days():
today = datetime.datetime.today().date()
selected_day = calendar.selection_get()
diff = (selected_day.date() - today).days
tk_messagebox.showinfo('相隔天数', f'距离今天相隔{diff}天')
diff_btn = tk.Button(window, text='计算与今天相隔天数', command=show_diff_days)
diff_btn.pack()
# 在窗口中添加一个日历控件,让用户可以选择日期
def show_selected_date():
selected_day = calendar.selection_get()
tk_messagebox.showinfo('选择日期', f'您选择了日期:{selected_day}')
calendar = calendar.Calendar(window)
calendar.pack()
ok_btn = tk.Button(window, text='确认', command=show_selected_date)
ok_btn.pack()
# 创建或连接到数据库
conn = sqlite3.connect('calendar.db')
# 创建用户事件表格
conn.execute('''CREATE TABLE IF NOT EXISTS events
(ID INTEGER PRIMARY KEY AUTOINCREMENT,
DATE TEXT NOT NULL,
EVENT TEXT NOT NULL,
REMIND_TIME TEXT);''')
# 在表格中插入用户事件数据
def add_event(date, event, remind_time):
conn.execute("INSERT INTO events (DATE,EVENT,REMIND_TIME) VALUES (?,?,?)", (date, event, remind_time))
conn.commit()
# 运行窗口
window.mainloop()
```
这段代码通过使用参数化查询,避免了SQL注入的问题,同时使用`tk_messagebox`来避免了命名冲突。
阅读全文