利用Python实现Windows定时关机功能


Posted in Python onMarch 21, 2017

是最初的几个爬虫,让我认识了Python这个新朋友,虽然才刚认识了几天,但感觉有种莫名的默契感。每当在别的地方找不到思路,总能在Python找到解决的办法。自动关机,在平时下载大文件,以及跑程序的时候能用到的,刚才写了个windows自动关机的小程序,程序过于简单,就当是玩玩吧,当然还有很多可改进的地方。下面正文:

 #ui制作:

照旧,笔者由Qt制作完成需要的ui,包括label,label_2,label_3,lable_4,lineEdit,lineEdit_2,pushButton组件.大致布局如下

利用Python实现Windows定时关机功能

两个lineEdit等待用户输入期望关机的时间。下面的Label用来显示操作后的返回信息。pushButton用于提交命令。ui制作完成。

ui转为py文件:

这里笔者装的是PyQt5,并添加了环境变量。所以转化的cmd命令(cd到ui所在目录):

pyuic5 shut.ui -o shut.py

执行成功之后在ui所在目录生成shut.py文件。

#显示窗口:

直接生成的py文件运行是看不到窗口的,我们要加上一些必要的内容才能显示我们的窗口:

 代码最上面加上

import sys

最后加上

if __name__ == '__main__': 
 app = QtWidgets.QApplication(sys.argv)
 Form = QtWidgets.QWidget()
 ui = Ui_x()//其中Ui_x为生成的class名
 ui.setupUi(Form) 
 Form.show()
 sys.exit(app.exec_())

之后再运行shut.py就能看到窗口了。

#功能实现:

思考一下程序的期望功能,使Windows自动关机。cmd命令是个不错的选择。于是笔者找了下,python执行cmd命令的方法:

os.popen('at 22:30 shutdown -s')

调用cmd,执行命令。而其中的22和30是等待用户输入的数据。因此,应该用两个lineEdit中获取到的合法数字替换对应的h和m。用到获取lineEdit内容的方法:

h = self.lineEdit.text()
m = self.lineEdit_2.text()

然后以h,m替换执行命令中的时,分.

接着就是pushButton的部分了。为pushButton添加监听事件click。

self.pushButton = QtWidgets.QPushButton(shut,clicked=self.sd)

其中,self.sd为触发该事件后,需要执行的操作。

 #完整代码:

一些关键的部分,叙述完毕,至于返回信息部分,笔者在这里不再详述。下面贴出来Windows自动关机完整的代码:

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'shut.ui'
#
# Created: Mon Mar 20 18:10:31 2017
#  by: PyQt5 UI code generator 5.2.1
#
# WARNING! All changes made in this file will be lost!
import sys
import os
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_shut(object):
 flag = True
 def setupUi(self, shut):
  shut.setObjectName("shut")
  shut.resize(411, 170)
  shut.setFixedSize(411,170)
  self.label = QtWidgets.QLabel(shut)
  self.label.setGeometry(QtCore.QRect(40, 50, 41, 51))
  self.label.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold))
  self.label.setObjectName("label")
  self.lineEdit = QtWidgets.QLineEdit(shut)
  self.lineEdit.setGeometry(QtCore.QRect(70, 50, 71, 41))
  self.lineEdit.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold))
  self.lineEdit.setObjectName("lineEdit")
  self.label_2 = QtWidgets.QLabel(shut)
  self.label_2.setGeometry(QtCore.QRect(150, 60, 31, 31))
  self.label_2.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold))
  self.label_2.setObjectName("label_2")
  self.lineEdit_2 = QtWidgets.QLineEdit(shut)
  self.lineEdit_2.setGeometry(QtCore.QRect(180, 50, 71, 41))
  self.lineEdit_2.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold))
  self.lineEdit_2.setObjectName("lineEdit_2")
  self.label_3 = QtWidgets.QLabel(shut)
  self.label_3.setGeometry(QtCore.QRect(260, 60, 31, 31))
  self.label_3.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold))
  self.label_3.setObjectName("label_3")
  self.pushButton = QtWidgets.QPushButton(shut,clicked=self.sd)
  self.pushButton.setGeometry(QtCore.QRect(290, 50, 101, 41))
  self.pushButton.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold))
  self.pushButton.setObjectName("pushButton")
  self.label_4 = QtWidgets.QLabel(shut)
  self.label_4.setGeometry(QtCore.QRect(0, 120, 411, 31))
  self.label_4.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold))
  self.label_4.setObjectName("label_4")
  self.retranslateUi(shut)
  QtCore.QMetaObject.connectSlotsByName(shut)
 def retranslateUi(self, shut):
  _translate = QtCore.QCoreApplication.translate
  shut.setWindowTitle(_translate("shut", "Auto Shutdown by dearvee"))
  self.label.setText(_translate("shut", "At:"))
  self.label_2.setText(_translate("shut", "H"))
  self.label_3.setText(_translate("shut", "M"))
  self.label_4.setText(_translate("shut", "Please input time of shutdown~"))
  self.pushButton.setText(_translate("shut", "Set"))
 def sd(self,shut):
  h = self.lineEdit.text()
  m = self.lineEdit_2.text()
  if self.flag:
   self.flag = False
   try:
    os.popen('at '+h+':'+m+' shutdown -s')
    self.label_4.setText('Success! the system will shutdown at today '+h+':'+m+'.')
    self.pushButton.setText('Remove all')
    self.lineEdit.clear()
    self.lineEdit_2.clear()
   except:
    self.label_4.setText('Something is wrong~')
  else:
   self.flag = True
   try:
    os.popen('at /delete /yes')
    self.label_4.setText('Success! already removed~')
    self.pushButton.setText('Set')
    self.lineEdit.clear()
    self.lineEdit_2.clear()
   except:
    self.label_4.setText('Something is wrong~')
if __name__ == '__main__': 
 app = QtWidgets.QApplication(sys.argv)
 Form = QtWidgets.QWidget()
 ui = Ui_shut()
 ui.setupUi(Form) 
 Form.show()
 sys.exit(app.exec_())

运行后,即出现如图操作窗口

利用Python实现Windows定时关机功能

#运行效果:

运行shut.py,输入12和53点击set,这时我们查看任务计划:

利用Python实现Windows定时关机功能

利用Python实现Windows定时关机功能

发现任务已经在计划中。点击Remove,刷新任务计划。

利用Python实现Windows定时关机功能

成功移除任务,功能实现

当然这只能在用户安装Python,并安装相关组件前提下才可运行。想要在任何windows使用,则需要下面的操作。

#打包:

笔者打包用的是Python的Pyinstaller组件。cd 到shut.py所在目录后,执行cmd命令:

pyinstaller -w shut.py

这时,在shut.py所在目录生成dist文件夹。生成的exe路径。dist>>shut(Python源码文件名)>>shut.exe.前面顺利的话,双击shut.exe便会显示前面源码运行同样的窗口和操作。这样,你就可以把shut目录整个发给你的朋友。他们就可以通过双击shut.exe使用你的程序了。

以上所述是小编给大家介绍的利用Python实现Windows定时关机功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python查找相似单词的方法
Mar 05 Python
Python操作Sql Server 2008数据库的方法详解
May 17 Python
Python 2.7中文显示与处理方法
Jul 16 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python进行TCP端口扫描的实现
Dec 21 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
Django异步任务线程池实现原理
Dec 17 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 Python
详解Python中的进程和线程
Jun 23 Python
使用Python生成XML的方法实例
Mar 21 #Python
Python存取XML的常见方法实例分析
Mar 21 #Python
Python正则简单实例分析
Mar 21 #Python
Python处理XML格式数据的方法详解
Mar 21 #Python
Python做简单的字符串匹配详解
Mar 21 #Python
Python 转义字符详细介绍
Mar 21 #Python
python 迭代器和iter()函数详解及实例
Mar 21 #Python
You might like
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
php zend解密软件绿色版测试可用
2008/04/14 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
深入解读Node.js中的koa源码
2019/06/17 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
Python如何发布程序的详细教程
2018/10/09 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
银行员工辞职信范文
2014/01/20 职场文书
公司营业员的自我评价
2014/03/04 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang