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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
举例区分Python中的浅复制与深复制
Jul 02 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
python selenium 弹出框处理的实现
Feb 26 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Python函数中的可变长参数详解
Sep 12 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 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
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
javascript中的面向对象
2017/03/30 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
js实现聊天对话框
2020/02/08 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python中random模块生成随机数详解
2016/03/10 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python日志模块logging基本用法分析
2018/08/23 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
Python爬虫开发与项目实战
2020/12/16 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
Python是如何进行类型转换的
2013/06/09 面试题
2019事业单位个人工作总结范文
2019/08/26 职场文书
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android