下面是Python编写一个GUI倒计时器的完整攻略:
1. 准备工作
在编写GUI倒计时器前,我们需要安装Python以及Tkinter库。Python是一种流行的高级编程语言,而Tkinter是Python自带的图形用户界面(GUI)库。
安装Python可以前往官网下载,安装过程中需要选择添加Python到系统路径;安装完成后,打开命令行(Windows下可以使用Win+R打开运行框,输入cmd)执行以下命令安装Tkinter库:
pip install tk
当以上两个准备工作完成之后,我们就可以开始编写GUI倒计时器了。
2. 编写代码
2.1 导入库
在代码文件的开头,我们需要导入Python自带的一些库和Tkinter库。
import tkinter as tk
import time
2.2 创建窗口
在主函数中,首先要创建一个窗口,可以使用Tk()
函数来创建,这个窗口相当于是一个容器,我们可以在窗口中添加各种组件,比如标签、按钮、文本框等等。
def main():
window = tk.Tk()
window.title("倒计时器")
window.geometry("300x150")
window.mainloop()
2.3 添加标签和文本框
倒计时器需要展示当前的倒计时时间,我们可以在窗口中添加一个标签和一个文本框来展示。
def main():
window = tk.Tk()
window.title("倒计时器")
window.geometry("300x150")
label = tk.Label(window, text="倒计时:", font=("Arial", 18))
label.pack()
time_text = tk.StringVar()
time_text.set("00:00:00")
time_label = tk.Label(window, textvariable=time_text, font=("Arial", 24))
time_label.pack()
window.mainloop()
2.4 编写倒计时函数
接下来,我们需要实现一个倒计时的函数。倒计时的核心是使用Python的time库来获取当前时间,然后计算与目标时间的差距,接着将差距转换成时、分、秒三个部分,最后展示到文本框中。
def countdown(time_text):
target_time = time.mktime(time.strptime("2020-12-31 23:59:59", "%Y-%m-%d %H:%M:%S"))
while True:
current_time = time.time()
remaining_time = target_time - current_time
if remaining_time <= 0:
break
hours = int(remaining_time // 3600)
minutes = int((remaining_time % 3600) // 60)
seconds = int(remaining_time % 60)
time_str = "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
time_text.set(time_str)
time_text.get()
time.sleep(1)
2.5 添加按钮并绑定事件
最后一步是添加一个按钮,在按钮被点击时调用countdown
函数进行倒计时,我们可以使用Button
组件来实现这个按钮,并使用command
属性绑定countdown
函数。
def main():
window = tk.Tk()
window.title("倒计时器")
window.geometry("300x150")
label = tk.Label(window, text="倒计时:", font=("Arial", 18))
label.pack()
time_text = tk.StringVar()
time_text.set("00:00:00")
time_label = tk.Label(window, textvariable=time_text, font=("Arial", 24))
time_label.pack()
start_btn = tk.Button(window, text="开始倒计时", font=("Arial", 16), command=lambda: countdown(time_text))
start_btn.pack()
window.mainloop()
if __name__ == '__main__':
main()
3. 示例说明
下面我们分别介绍两个倒计时器的示例。
3.1 示例一
要求实现一个倒计时器,从当前时间开始倒计时10分钟。
def main():
window = tk.Tk()
window.title("倒计时器")
window.geometry("300x150")
label = tk.Label(window, text="倒计时:", font=("Arial", 18))
label.pack()
time_text = tk.StringVar()
time_text.set("00:10:00")
time_label = tk.Label(window, textvariable=time_text, font=("Arial", 24))
time_label.pack()
start_btn = tk.Button(window, text="开始倒计时", font=("Arial", 16), command=lambda: countdown(600, time_text))
start_btn.pack()
window.mainloop()
def countdown(seconds, time_text):
target_time = time.time() + seconds
while True:
current_time = time.time()
remaining_time = target_time - current_time
if remaining_time <= 0:
break
hours = int(remaining_time // 3600)
minutes = int((remaining_time % 3600) // 60)
seconds = int(remaining_time % 60)
time_str = "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
time_text.set(time_str)
time_text.get()
time.sleep(1)
if __name__ == '__main__':
main()
3.2 示例二
要求实现一个倒计时器,到指定的日期时间后进行提醒。
def main():
window = tk.Tk()
window.title("倒计时器")
window.geometry("300x150")
label = tk.Label(window, text="倒计时:", font=("Arial", 18))
label.pack()
time_text = tk.StringVar()
time_text.set("00:00:00")
time_label = tk.Label(window, textvariable=time_text, font=("Arial", 24))
time_label.pack()
start_btn = tk.Button(window, text="开始倒计时", font=("Arial", 16), command=lambda: countdown("2021-01-01 00:00:00", time_text))
start_btn.pack()
window.mainloop()
def countdown(target_time_str, time_text):
target_time = time.mktime(time.strptime(target_time_str, "%Y-%m-%d %H:%M:%S"))
while True:
current_time = time.time()
remaining_time = target_time - current_time
if remaining_time <= 0:
break
hours = int(remaining_time // 3600)
minutes = int((remaining_time % 3600) // 60)
seconds = int(remaining_time % 60)
time_str = "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
time_text.set(time_str)
time_text.get()
time.sleep(1)
tk.messagebox.showinfo("提示", "倒计时结束!")
if __name__ == '__main__':
main()
这两个示例分别展示了从当前时间开始倒计时10分钟和到指定时间后进行提醒的倒计时器,你可以根据自己的需求进行修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python编写一个GUI倒计时器 - Python技术站