|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
经典之作
- import time
- import threading
- import tkinter as tk
- from tkinter.messagebox import *
- from tkinter.ttk import Combobox, Progressbar
- import pygame
- def Top1():
- global top1, entry1, entry2, combobox1
- try:
- top1.destroy()
- except:
- pass
- top1 = tk.Toplevel(win)
- top1.geometry("250x250")
- top1.title("闹钟")
- label1_1 = tk.Label(top1, text="当前时间:", font=("黑体", 15), height=2)
- label1_1.grid(row=0, column=0)
- label1_2 = tk.Label(top1, textvariable=varLabel1, font=("黑体", 15), height=2)
- label1_2.grid(row=0, column=1)
- label1_3 = tk.Label(top1, text="闹钟时间:", font=("黑体", 15), height=2)
- label1_3.grid(row=1, column=0)
- # 设定 justify 属性,其定义是输入控件中文本的对齐方式。
- # 可以设置的数值为:LEFT,CENTER, RIGHT。默认数值是LEFT。
- entry1 = tk.Entry(top1, font=("黑体", 15), width=13, bg="#FFEBCD", justify='center')
- entry1.insert(0, now)
- entry1.grid(row=1, column=1)
- label4 = tk.Label(top1, text="提示词:", font=("黑体", 15), height=2)
- label4.grid(row=2, column=0)
- entry2 = tk.Entry(top1, textvariable=varLabel2,font=("微软雅黑 Light", 15),
- width=13, bg="#FFEBCD")
- entry2.grid(row=2, column=1)
- label5 = tk.Label(top1, text="闹钟音乐:", font=("黑体", 15), height=2)
- label5.grid(row=3, column=0)
- combobox1 = Combobox(top1,values=music, width=12, font=("楷体", 13))
- combobox1.current(0) # current(index):设置默认选中索引为index的选项
- combobox1.grid(row=3, column=1)
- ok_button_1 = tk.Button(top1, text="确定",font=25, width=10, bg="#00f5ff", command=ok_time)
- ok_button_1.grid(row=4, column=0, columnspan=2, pady=30)
- def Top2():
- global top2, clock_is_running, start_or_pause_button, times_box
- try:
- top2.destroy()
- except:
- pass
- top2 = tk.Toplevel(win)
- top2.geometry("335x425")
- top2.title("秒表")
- last_time_label = tk.Label(top2, textvariable=last_time, font=("微软雅黑 Light", 40))
- last_time_label.grid(row=0, column=0, columnspan=3)
- start_or_pause_button = tk.Button(top2, text="开始", font=("黑体", 15), bg="green", command=clock_start_or_pause)
- start_or_pause_button.grid(row=1, column=0)
- remember_button = tk.Button(top2, text="计次", font=("黑体", 15), fg="purple", command=remember_last_time)
- remember_button.grid(row=1, column=1)
- reset_button = tk.Button(top2, text="重置", font=("黑体", 15), bg="orange", command=reset_clock)
- reset_button.grid(row=1, column=2)
- times_box = tk.Listbox(top2, font=("微软雅黑", 18), fg="blue", width=20, height=10)
- times_box.grid(row=3, column=0, columnspan=3)
- def Top3():
- global top3, count_pro
- try:
- top3.destroy()
- except:
- pass
- top3 = tk.Toplevel(win)
- top3.geometry("400x400")
- label3_1 = tk.Label(top3, text="定时器时长(时:分:秒)", font=("黑体", 15), height=2)
- label3_1.grid(row=0, column=0, columnspan=3)
- sc1 = tk.Scale(top3, length=200, label=":", from_=0, to=23, tickinterval=2)
- sc1.grid(row=1, column=0)
- sc2 = tk.Scale(top3, length=200, label=":", from_=0, to=59, tickinterval=10)
- sc2.grid(row=1, column=1)
- sc3 = tk.Scale(top3, length=200, from_=0, to=59, tickinterval=10)
- sc3.grid(row=1, column=2)
- count_pro = Progressbar(top3, value=0, length=200, maximum=1000)
- count_pro.grid(row=2, column=0, columnspan=3, pady=15)
- ok_button_3 = tk.Button(top3, text="确定", font=25, width=10, bg="#00f5ff",
- command=lambda: count(sc1.get(), sc2.get(), sc3.get()))
- ok_button_3.grid(row=3, column=0, columnspan=3, pady=30)
- def clock_start_or_pause():
- global clock_is_running, start_or_pause_button, reset
- clock_is_running = not clock_is_running
- reset = False
- text_list = ["继续", "暂停"]
- start_or_pause_button.config(text=text_list[clock_is_running])
- clock_run()
- def clock_run():
-
- def job2():
- global clock_is_running, last_h, last_m, last_s, last_ms
- while clock_is_running:
- set_h = str(last_h).zfill(2)
- set_m = str(last_m).zfill(2)
- set_s = str(last_s).zfill(2)
- set_ms = str(last_ms).zfill(3)
- last_time.set(set_h + ":" + set_m + ":" + set_s + "." + set_ms)
- time.sleep(0.001)
- last_ms += 1
- if last_ms == 1000:
- last_ms = 0
- last_s += 1
- if last_s == 60:
- last_s = 0
- last_m += 1
- if last_m == 1000:
- last_m = 0
- last_h += 1
- if reset:
- last_time.set("00:00:00.000")
- clock_job = threading.Thread(target=job2)
- clock_job.start()
- def remember_last_time():
- global times
- times += 1
- times_box.insert(times, "计次" + str(times) + "-" + last_time.get())
- def reset_clock():
- global clock_is_running, last_h, last_m, last_s, last_ms, times, last_time, times_box, reset
- times_box.delete(0, tk.END)
- reset = True
- clock_is_running = False
- last_h, last_m, last_s, last_ms, times = 0, 0, 0, 0, 0
- start_or_pause_button.config(text="开始")
- last_time.set("00:00:00.000")
- def count(h, m, s):
- total_seconds = h * 3600 + m * 60 + s
- def job():
- count_pro.start(total_seconds) # total_seconds*1000/1000
- time.sleep(total_seconds)
- count_pro.stop()
- showinfo("嘿", "倒计时结束了")
- top3.destroy()
- count_job = threading.Thread(target=job)
- count_job.start()
- def now_time():
- global now
- now = time.strftime('%H:%M:%S')
- varLabel1.set(now)
- win.after(1000, now_time)
- def ok_time():
- if entry1.get() == "":
- showinfo("", "输入为空")
- else:
- top1.iconify()
- if now == entry1.get():
- pygame.mixer.music.load(combobox1.get())
- pygame.mixer.music.play(-1)
- showinfo("It's time to...", "到点了~%s\n%s" %(now,entry2.get()))
- pygame.mixer.music.stop()
- top1.destroy()
- top1.after(1000, ok_time)
- music = ["清脆.mp3", "大爆炸.wav"]
- pygame.init()
- pygame.mixer.music.set_volume(0.5)
- win = tk.Tk()
- varLabel1 = tk.StringVar()
- varLabel2 = tk.StringVar()
- varLabel2.set("闹钟")
- clock_is_running = False
- reset = False
- last_h = last_m = last_s = last_ms = 0
- last_time = tk.StringVar()
- last_time.set("00:00:00.000")
- times = 0
- win.geometry("580x350")
- nowday = time.strftime('%Y-%m-%d %a.')
- now = time.strftime('%H:%M:%S')
- day_label = tk.Label(win, text=nowday, font=("微软雅黑", 30))
- day_label.grid(row=0, column=0, columnspan=3)
- time_label = tk.Label(win, textvariable=varLabel1, font=("微软雅黑", 60), fg="red")
- time_label.grid(row=1, column=0, columnspan=3)
- button1 = tk.Button(win, text="闹钟", font=("微软雅黑", 15), width=10, height=3, command=Top1)
- button1.grid(row=2, column=0, padx=30, pady=30)
- button2 = tk.Button(win, text="秒表", font=("微软雅黑", 15), width=10, height=3, command=Top2)
- button2.grid(row=2, column=1, padx=30, pady=30)
- button3 = tk.Button(win, text="倒计时", font=("微软雅黑", 15), width=10, height=3, command=Top3)
- button3.grid(row=2, column=2, padx=30, pady=30)
- now_time()
- win.mainloop()
复制代码
@不二如是 @KeyError @python爱好者. @sfqxx @zhangjinxuan @stumblemodel @cjjJasonchen @学习编程中的Ben @一点沙 @zhangchenyvn
欢迎评论
|
评分
-
查看全部评分
|