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


#ui制作:

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

两个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_())

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

#运行效果:

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

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

成功移除任务,功能实现

当然这只能在用户安装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使用你的程序了。

至此,关于最近做的windows自动关机小软件的经验叙述完毕~

Python实现Windows定时关机的更多相关文章

  1. python制作电脑定时关机办公神器,另含其它两种方式,无需编程!

      小编本人目前就是在电脑面前工作,常常会工作到凌晨两三点还在为自己的梦想奋斗着.有时在办公椅上就稀里糊涂睡着了,我相信有很多朋友和我一样,这样是很不好的.第一对身体不好,第二对电脑不好.   对身体 ...

  2. 【Windows定时关机】windows实现定时关机与取消

    背景:本人昨晚本来打算将电脑设置为晚上12点 30定时关机,结果写成了:12:30,所以就在刚才,我正玩游戏的时候, 电脑弹出提示:“windows将在一分钟内关闭”,我刚开始一脸懵逼,后来打开昨天敲 ...

  3. wpf实现一个windows定时关机的工具

    基本界面 起源 在家睡前喜欢用电脑放情景喜剧看,电脑需要定时关机,一开始直接命令行定时关机,感觉有点小麻烦, 于是最近弄了个有界面的 主要功能 在指定的时间之后执行 关机|休眠|重启 的操作, 支持取 ...

  4. Python 代码控制Windows定时关机

    为了在规定时间内实现电脑关机,我使用python编写了几行代码,最简单的实现了关机操作,后续再进行其它功能的添加(操作页面,取消等) import os,time #获取命令行输入的关机时间 inpu ...

  5. Windows定时关机

    用shutdown命令.开始菜单>运行,输入shutdown -s -t 7200 (两个小时之后关机)at 12:00 shutdown -s (12:00关机) 其他设置:shutdown ...

  6. windows定时关机命令

    at 11:00 shutdown.exe -s -t 120 https://jingyan.baidu.com/article/574c52191ea9996c8c9dc17a.html?st=2 ...

  7. Windows: 在系统启动时运行程序、定时计划任务、定时关机

    lesca今天介绍一些让系统在启动时,而非登录时,加载用户自定义的应用程序或脚本的方法,推荐度从前到后依次递减. 1. Windows任务计划(task scheduler) 用户可以按以下步骤进行操 ...

  8. Windows 8 自带定时关机的4种实现方法

    问题描述:前几天发布了一篇文章[ Windows 7/8 自带定时关机命令 ],文章中的用到的命令我在Windows 7都运行成功,但没有在Windows 8 上进行测试,因为我认为Windows 8 ...

  9. Windows 7/8 自带定时关机命令

    快捷键“Windows + R”,输入cmd打开cmd.exe程序,输入以下对应命令.   两种定时关机方式: 定时任务法 输入命令“at hh:mm shutdown -s”,Enter——添加了一 ...

随机推荐

  1. cocos2dx内存管理的个人理解

    1.一帧开始之后的过程中,将所有执行到的autorelease的对象加入到池中:2.一帧结束之前取出池中的所有对象记作objs,清空池:3.对取出来的objs进行遍历,每个元素进行一次release: ...

  2. 【鸡年大吉】,不知道写点啥,放个demo(小球碰撞)吧,有兴趣的看看

    最初的想法是仿写win7的泡泡屏保效果,但是对于小球的斜碰问题一直没搞明白(如果你会这个,欢迎留言或者做个demo),所以只是简单处理了碰撞后的速度,有时候会看起来很搞笑~~~funny guy 话不 ...

  3. 深圳尚学堂:Android APP的测试流程

    每一个新开发的软件都避免不了测试,我在这里总结了一些Android系统的移动端APP测试的一些测试流程,希望可以给大家一些帮助. 1. UI 测试App主要核ui与实际设计的效果图是否一致:交互方面的 ...

  4. WinForm 文件操作

    文件及文件夹操作 C/S:WinForm可以操作客户端文件 Client ServerB/S:浏览器服务 Brower Server 命名空间:using system .IO; 1. File类:文 ...

  5. js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式

    alert("A"); confirm("B");var name = confirm("B");if(name){ alert(" ...

  6. 简单的Elf逆向Writeup

    ElfCrackMe1 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acrony ...

  7. Docker网络代理设置

    背景 在一些实验室环境,服务器没有直接连接外网的权限,需要通过网络代理.我们通常会将网络代理直接配置在/etc/environment./etc/profile之类的配置文件中,这对于大部分操作都是可 ...

  8. Flash、Ajax各自的优缺点,在使用中如何取舍?

    1.Flash ajax对比 Flash适合处理多媒体.矢量图形.访问机器:对CSS.处理文本上不足,不容易被搜索. Ajax对CSS.文本支持很好,支持搜索:多媒体.矢量图形.机器访问不足. 共同点 ...

  9. HBase介绍

    欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://gith ...

  10. 20150817---成长日记1---DelayQueue&&Delayed&&Other

    今天第一次接触DelayQueue,源于项目中的话单解析入库的拆分线程中引入,首先简单了解一下DelayQueue: DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素.该队列的 ...