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的三目运算符和not in运算符使用示例
Mar 03 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
python如何修改装饰器中参数
Mar 20 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
flask框架中的cookie和session使用
Jan 31 Python
10张动图学会python循环与递归问题
Feb 06 Python
Python爬虫之爬取某文库文档数据
Apr 21 #Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
python Polars库的使用简介
You might like
android上传图片到PHP的过程详解
2015/08/03 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
校园招聘策划书
2014/01/09 职场文书
运动会通讯稿50字
2014/01/30 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
如何利用pygame实现打飞机小游戏
2021/05/30 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL