python tkinter实现定时关机


Posted in Python onApril 21, 2021

本文实例为大家分享了python tkinter实现定时关机的具体代码,供大家参考,具体内容如下

很早以前写的,懒得修改,代码很简单,适合初学者

运行效果图如下:

python tkinter实现定时关机

使用注意

  • 设定时间后点击开始即可实现定时关机,同时窗口也会关闭
  • 想要取消关机的话,再次打开,点取消即可

代码如下

import os,time
# import multiprocessing
import threading
from tkinter import *
from tkinter import ttk
import tkinter.messagebox as message_box
window =Tk()
window.title('auto_shutdown')
window.geometry('240x180')
window.resizable(False, False)
window.update() 
var = StringVar()
var1 = StringVar()
var2 = StringVar()
# 设置func为守护线程
def funcs():
 t = threading.Thread(target=func)
 t.setDaemon(True)
 t.start()
# 执行自动关机指令
def func():
 #弹出messagebox警告提示
 message_box.showwarning("Warning", "Your pc will shutdown at %s : %s" % (var.get(),var1.get()))
 print('wohaizai')
 mytime = time.strftime('%H:%M:%S')
 h2 = mytime[0:2]
 m2 = mytime[3:5]
 s2 = mytime[6:]
 print(h2)
 print(m2)
 print(s2)
 print(var.get())
 print(var1.get())
 # 算出距离关机时间的秒数
 count_down_second=-int(h2)*3600-int(m2)*60-int(s2)+int(var.get())*3600+int(var1.get())*60+int(var2.get())
 # 如果关机设置在第二天,结果加86400(一天的总秒数)
 if count_down_second<0:
  count_down_second=count_down_second+86400
 os.system("shutdown -s -t %s" % count_down_second)
 print(count_down_second)
 window.quit()


# 快捷关机选项入口
def fun_set1():
 cb_h.current(18)
def fun_set2():
 cb_h.current(21)
def fun_set3():
 cb_h.current(22)
def fun_set4():
 cb_h.current(23)
def funcq():
 os.system('shutdown -a')

# 定义三个容器,方便布局
root = ttk.LabelFrame(window, text="定时关机")
root.grid(column=0, row=0,padx=2, pady=2)
root1 = ttk.LabelFrame(window, text="常用时间")
root1.grid(column=1, row=0,padx=2, pady=2)
root2 = ttk.LabelFrame(window, text="开始")
root2.grid(column=0, row=1,columnspan=2,padx=2, pady=2)




Label(root,text=':').grid(column=1, row=0,padx=2, pady=5)

cb_h = ttk.Combobox(root,width=3,textvariable =var)
a = []
for i in range(10):
 a.append(('0'+str(i)))
for i in range(10,24):
 a.append(i)
 cb_h['values'] =tuple(a)
cb_h.current(0)
cb_h.grid(column=0, row=0,padx=2, pady=5)


cb_m = ttk.Combobox(root,width=3,textvariable =var1)

b = []
for i in range(10):
 b.append('0'+str(i))

for i in range(10,60):
 b.append(str(i))
 cb_m['values'] =tuple(b)
cb_m.current(0)
cb_m.grid(column=2, row=0,padx=2, pady=5)

cb_s = ttk.Combobox(root,width=3,textvariable =var2)

c = []
for i in range(10):
 c.append('0'+str(i))

for i in range(10,60):
 c.append(str(i))
 cb_s['values'] =tuple(c)
cb_s.current(0)
cb_s.grid(columnspan=3, row=1,padx=2, pady=6)



Button(root1,text = '18:00',command = fun_set1).grid(column=0, row=0,padx=2, pady=2)
Button(root1,text = '21:00',command = fun_set2).grid(column=1, row=0,padx=2, pady=2)
Button(root1,text = '22:00',command = fun_set3).grid(column=0, row=1,padx=2, pady=2)
Button(root1,text = '23:00',command = fun_set4).grid(column=1, row=1,padx=2, pady=2)



b1=Button(root2,text = '开始',command = funcs,height =2,width =6)
b1.grid(column=0, row=0,padx=24, pady=2)
b1=Button(root2,text = '取消',command = funcq,height =2,width =6)
b1.grid(column=1, row=0,padx=24, pady=2)

root.mainloop()

项目的github地址

ps:已打包为exe格式,可在dist目录下找到

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

Python 相关文章推荐
Python中lambda的用法及其与def的区别解析
Jul 28 Python
python通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
Python中的面向对象编程详解(上)
Apr 13 Python
python中的全局变量用法分析
Jun 09 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
python 并发下载器实现方法示例
Nov 22 Python
python实现图像外边界跟踪操作
Jul 13 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
Python爬虫之爬取某文库文档数据
Apr 21 #Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
python Polars库的使用简介
You might like
非常经典的PHP文件上传类分享
2016/05/15 PHP
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
python检测lvs real server状态
2014/01/22 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
J2EE中的容器都包括哪些
2013/08/21 面试题
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
给医院的感谢信
2015/01/21 职场文书
介绍长城的导游词
2015/01/30 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
加强党性修养心得体会
2016/01/21 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL