python实现倒计时小工具


Posted in Python onJuly 29, 2019

本文实例为大家分享了python实现倒计时小工具的具体代码,供大家参考,具体内容如下

#!/usr/bin/env python
# coding=utf-8
 
import threading
import time
import Queue
from Tkinter import *
import tkMessageBox
import logging
logging.basicConfig(level=logging.INFO)
 
## Communication queue
commQueue = Queue.Queue()
g_time = 0
 
## Function run in thread
def timeThread():
 global g_time
 g_time = timeVar.get() * 60
 while 1:
 logging.info("线程放入队列:%d".decode("utf-8") % g_time)
 commQueue.put(g_time)
 try:
  root.event_generate('<<TimeChanged>>', when='tail')
 except TclError:
  break
 time.sleep(1)
 g_time -= 1
 if g_time==-1:
  begin_btn["fg"] = "black"
  clockVar.set("开始计时")
  break
 
def timeChanged(event):
 x = commQueue.get()
 logging.info("获取队列:%d".decode("utf-8") % x)
 minits = x//60
 seconds = x%60
 s = "剩余时间 {:02}:{:02}".format(minits, seconds)
 begin_btn["fg"] = "blue"
 clockVar.set(s)
 if x==0:
  tkMessageBox.showinfo("提醒","时间已到")
 
 
def clock_func(*args):
 global g_time
 if threading.activeCount()>1:
 g_time = timeVar.get() * 60
 else:
 th=threading.Thread(target=timeThread)
 th.start()
 
## Create main window
root = Tk()
root.title("计时工具")
root.geometry("180x95-0-45")
root.resizable(width=FALSE,height=FALSE)
root.wm_attributes("-topmost",1)
frame = Frame(root)
frame.pack()
Label(frame,text="设定时间间隔").grid(row=1,column=2)
timeVar = IntVar()
clockVar = StringVar()
time_entry = Entry(frame, textvariable=timeVar, width=8)
time_entry["justify"] = "center"
time_entry.grid(row=2,column=2,sticky="W,E")
begin_btn = Button(frame,textvariable=clockVar,command=clock_func)
begin_btn.grid(row=3,column=2)
timeVar.set(8)
begin_btn["fg"] = "black"
clockVar.set("开始计时")
 
for child in frame.winfo_children():
 child.grid_configure(pady=3)
 
time_entry.focus()
root.bind('<<TimeChanged>>', timeChanged)
root.bind("<Return>",clock_func)
root.mainloop()

小编再为大家分享一段代码:Python窗口倒计时

# Countdown using Tkinter 
from tkinter import *
import time
import tkinter.messagebox
 
class App:
 def __init__(self,master):
  frame = Frame(master)
  frame.pack()
  self.entryWidget = Entry(frame)
  self.entryWidget["width"] = 15
  self.entryWidget.pack(side=LEFT)
  self.hi_there = Button(frame, text="开始", command=self.start)
  self.hi_there.pack(side=LEFT)
  self.button = Button(frame, text="退出", fg="red", command=frame.quit)
  self.button.pack(side=LEFT)
  
 def start(self):
  text = self.entryWidget.get().strip()
  if text != "":
   num = int(text)
   self.countDown(num)
  
 def countDown(self,seconds):
  lbl1.config(bg='yellow')
  lbl1.config(height=3, font=('times', 20, 'bold'))
  for k in range(seconds, 0, -1):
   if k == 30:
    print("\a")
   if k== 29:
    print("\a")
   if k== 28:
    print("\a")
   lbl1["text"] = k
   root.update()
   time.sleep(1)
  lbl1.config(bg='red')
  lbl1.config(fg='white')
  lbl1["text"] = "时间到!"
  tkMessageBox.showinfo("时间到!","时间到!")
 
 def GetSource():
  get_window = Tkinter.Toplevel(root)
  get_window.title('Source File?')
  Tkinter.Entry(get_window, width=30,
      textvariable=source).pack()
  Tkinter.Button(get_window, text="Change",
      command=lambda: update_specs()).pack()
 
root = Tk()
root.title("Countdown")
lbl1 = Label()
lbl1.pack(fill=BOTH, expand=1)
app = App(root)
root.mainloop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中mechanize库的简单使用示例
Jan 10 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
深入浅析python 协程与go协程的区别
May 09 Python
python自动循环定时开关机(非重启)测试
Aug 26 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 Python
django rest framework 实现用户登录认证详解
Jul 29 #Python
pycharm重命名文件的方法步骤
Jul 29 #Python
PyQt5实现暗黑风格的计时器
Jul 29 #Python
Python Django 实现简单注册功能过程详解
Jul 29 #Python
Django models.py应用实现过程详解
Jul 29 #Python
pycharm中显示CSS提示的知识点总结
Jul 29 #Python
pandas 如何分割字符的实现方法
Jul 29 #Python
You might like
Terran兵种对照表
2020/03/14 星际争霸
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
php获取linux命令结果的实例
2017/03/13 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
部署Python的框架下的web app的详细教程
2015/04/30 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python梯度下降法的简单示例
2018/08/31 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
如何利用python读取micaps文件详解
2020/10/18 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
创业计划书模版
2014/02/05 职场文书
新年晚会主持词
2014/03/24 职场文书
业务内勤岗位职责
2014/04/30 职场文书
青春无悔演讲稿
2014/05/08 职场文书
代收款委托书范本
2014/10/01 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang