python实现简单倒计时功能
作者:一条小白鱼 发布时间:2022-09-29 03:08:32
标签:python,倒计时
使用python实现简单倒计时exe,供大家参考,具体内容如下
使用tkinter制作界面实现倒计时功能。
使用time.sleep(1)实现 秒级 倒计时
使用线程避免界面卡死
在线程的循环中检测全局标志位,保证计时线程的重置、以及退出
使用pyinstaller -F file.py -w 生成exe文件,-w表示隐藏控制台,-F表示生成单文件
代码如下:
#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time : 2021/4/19 14:09
# @Author : dongdong
# @File : CountdownGUI.py
# @Software: PyCharm
from tkinter import *
import time
import threading
def cyclethread():
global counttime
global restartflag
global runflag
restartflag=False
if (timestr.get().isdigit()):
counttime = int(timestr.get()) * 60
else:
runflag=False
return;
while (1):
if(restartflag):
counttime = int(timestr.get()) * 60
restartflag=False
if(exitflag):
sys.exit()
counttime=counttime-1
v='\nleft time:'+str(counttime//60)+' :'+str(counttime%60)
textshow.set(v)
root.update()
if (counttime <= 0):
runflag = False
return
time.sleep(1)
def startCount():
global restartflag
global runflag
restartflag=True
if( not runflag):
th=threading.Thread(target=cyclethread)
th.setDaemon(True)
th.start()
runflag = True
def exitfun():
global exitflag
exitflag=True
sys.exit()
restartflag=False
exitflag=False
counttime=None
runflag=False
root=Tk()
root.geometry('250x120')
root.title('TimeCounter')
timestr = StringVar(value="30")
textshow=StringVar(value='\nCountDown:30min ')
text0=Label(root,text='Input time(min):').grid(row=0,column=0,columnspan=3)
entext=Entry(root,textvariable=timestr).grid(row=0,column=3,columnspan=1)
# bnframe=ttk.Frame(root).grid(row=1,column=0,columnspan=4)
stbn=Button(root,text='Start',command=startCount).grid(row=1,column=2,columnspan=1)
enbn=Button(root,text='Exit',command=exitfun).grid(row=1,column=3,columnspan=1)
text=Label(root,textvariable=textshow).grid(row=2,column=0,columnspan=4)
root.mainloop()
来源:https://blog.csdn.net/qq_36338830/article/details/115867338


猜你喜欢
- 这段时间微信跳一跳这个游戏非常火爆,但是上分又非常的难,对于程序员来说第一个念头就是通过写一个辅助脚本 * 让上分变的容易,python现在比
- 1.命令介绍最近学习并使用了一个python的内置函数dir,首先help一下:>>> help(dir)Help on
- 一般常规的我们保存数据为dict类型时,系统会自动帮我们排序;但有时我们想按照输入顺序的key:value保存到dict中,而不想要改变顺序
- 提示:以下操作均在root权限下进行。# 查看有没有安装MySQL:dpkg -l | grep mysql# 安装MySQL:apt in
- 目录一、索引类型1.B+树2.MyISAM和InnoDB的B+树索引实现方式的区别(聚簇索引和非聚簇索引)?3.非聚簇索引4.聚簇索引的优缺
- 原则, 以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理步骤:1. 掌握几种对象及其关系
- 百度语音对上传的语音要求目前必须是单声道,16K采样率,采样深度可以是16位或者8位的PCM编码。其他编码输出的语音识别不出来。语音的处理技
- 函数的return 语句只能返回一个值,可以是任何类型。因此,我们可以“返回一个 tuple类型,来间接达到返回多个值 ”。例:
- vue动态绑定class练习。:class=“{ ‘类名1':条件表达式,‘类名2':条件表达式… }”<templa
- 问题:无法上传较大的文件“Request 对象 错误 'ASP 0104 : 80004005'”或者上传成功后,找不到文件
- SQL Server数据库动态交叉表的参考示例:--建立测试环境set nocount oncreate table test(model
- 本文实例讲述了JS获取网页图片name属性的方法。分享给大家供大家参考。具体如下:下面的JS代码可以用来获取网页图片的name属性<!
- 前言大家谈及用Pandas导出数据,应该就会想到to.xxx系列的函数。这其中呢,比较常用的就是pd.to_csv()和pd.to_exce
- 今天出于需要,要将爬虫爬取的一些数据整理成二维数组,再编码成json字符串传入数据库那么问题就来了,在php中这个过程很简便 ,类似这样:
- 本文实例讲述了python实现线程池的方法。分享给大家供大家参考。具体如下:原理:建立一个任务队列,然多个线程都从这个任务队列中取出任务然后
- 我的环境,Windows10,Python3.6.3查询了很多有关资料,发现都是Python2版本操作Word文件的,所以就写了这篇短小的文
- django创建自定义模板处理器:一、需求来源:在django开发中,页面是通过template(模板)进行渲染的,对于一些数据,可以通过{
- 本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作。首先,相关操作所需具体代码
- 蚁群算法简介蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agen
- Request.Cookies.Clear()这个方法并不是删除Cookie 删除 Cookie(即从用户的硬盘中物理移除 Cookie)是