利用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读写Redis数据库操作示例
Mar 18 Python
Python3使用requests发闪存的方法
May 11 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
Dec 20 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
python3实现随机数
Jun 25 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
Python 串口读写的实现方法
Jun 12 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
python 爬取B站原视频的实例代码
Sep 09 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
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
python 统计代码行数简单实例
2017/05/04 Python
分分钟入门python语言
2018/03/20 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Python如何实现强制数据类型转换
2019/11/22 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
护士个人简历自荐信
2013/10/18 职场文书
仓管员岗位职责范文
2013/11/08 职场文书
网络技术专业求职信
2014/02/18 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
文艺演出策划方案
2014/06/07 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
无工作证明怎么写
2015/06/15 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL
php去除数组中为0的元素的实例分析
2021/11/17 PHP
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python