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/ironpython:从入门到精通
Oct 02 Python
python进阶教程之词典、字典、dict
Aug 29 Python
pygame播放音乐的方法
May 19 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
Python Nose框架编写测试用例方法
Oct 26 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
python实现把两个二维array叠加成三维array示例
Nov 29 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
Nov 17 Python
python周期任务调度工具Schedule使用详解
Nov 23 Python
python保存图片的四个常用方法
Feb 28 Python
Python爬虫之爬取某文库文档数据
Apr 21 #Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
python Polars库的使用简介
You might like
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
PHP关联数组的10个操作技巧
2013/01/21 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
Opacity.js
2007/01/22 Javascript
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
服务器安全设置的几个注册表设置
2007/07/28 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
在Python中使用第三方模块的教程
2015/04/27 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
django Serializer序列化使用方法详解
2018/10/16 Python
Python 函数返回值的示例代码
2019/03/11 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python中的django是做什么的
2020/07/31 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
会计岗位职责范本
2014/03/07 职场文书
春节晚会主持词
2014/03/24 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
HTML常用标签超详细整理
2022/03/19 HTML / CSS
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android