利用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的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
Python多线程扫描端口代码示例
Feb 09 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
python画折线图的程序
Jul 26 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
Windows10下 python3.7 安装 facenet的教程
Sep 10 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
python批量提取图片信息并保存的实现
Feb 05 Python
python元组拆包实现方法
Feb 28 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根据IP地址获取所在城市具体实现
2013/11/27 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
php递归函数怎么用才有效
2018/02/24 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
jquery 表单取值常用代码
2009/12/22 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
python实现定制交互式命令行的方法
2014/07/03 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
小学毕业感言500字
2014/02/28 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
党支部鉴定意见
2015/06/02 职场文书
校友会致辞
2015/07/30 职场文书
python实现会员管理系统
2022/03/18 Python
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏