实践项目一:Python实现Windows定时关机
2017-07-05 12:24
1226 查看
原文出处:dearvee
用了一个星期在PythonTip刷了50道题目,熟悉了python基本的语法,开始找一些小项目实践学习一下,并把学习过程中遇到的问题和学到的知识记录下来。这是我学习的第一个Python项目: “Python 实现Window定时关机”。
环境:
win7 64-bit
python 3.4.3 (下载使用教程)+PyQt5-5.4 (下载使用教程)+sublime
text 3 (下载)
打包工具 : Pyinstaller(下载使用教程)+ pywin32(下载使用教程)
Ui制作:
包括label,label_2,label_3,label_4,lineEdit,lineEdit_2,pushButton七个组件,布局如下图:
控件作用:
Label :显示“ 在 ” Label_2:显示 “ 时 ”
Label_3 :显示 “ 分 ” Label_4 : 用来显示操作后返回的信息
pushButton:用于提交命令
显示窗口:
直接编写的py文件运行时看不到窗口的,我们要加上一些必要的内容才能显示我们的窗口。
代码最前面:
import sys
代码最后面:
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就能看到窗口了
功能:
功能的目标:使Windows自动关机。
实现:
1. 通过python调用cmd,执行命令,而其中的数字是等待用户输入的数据,因此用两个lineEdit中获取的合法数字替换 对应的h和m,用来获得lineEdit内容的方法:然后以h,m替换执行命令中的时,分。
h = self.lineEdit.text()
m = self.lineEdit_2.text()
2.为pushButton添加监听事件click:(其中,self.sd为触发该事件后,需要执行的操作)
self.pushButton = QtWidgets.QPushButton(shut,clicked=self.sd)
完整代码:
运行效果:
运行shut.py,输入15和30点击设置。
这时我们在计算机搜索任务计划,打开任务计划,可以在任务计划程序库中可以发现已经在计划中了,点击移除,刷新任务计划。
成功移除任务,功能实现
打包:
用Python的Pyinstaller组件。cd到shut.py所在目录后,执行cmd命令:
这时,在shut.py所在目录生成dist文件夹。生成的exe路径。dist>>shut(Python源码文件名)>>shut.exe.前面顺利的话,双击shut.exe便会显示前面源码运行同样的窗口和操作。这样,你就可以把shut目录整个发给你的朋友。他们就可以通过双击shut.exe使用你的程序了。
注意:一定要加 ‘-F’,不然会生成很多依赖包
这是我打包后的文件:shut.exe
用了一个星期在PythonTip刷了50道题目,熟悉了python基本的语法,开始找一些小项目实践学习一下,并把学习过程中遇到的问题和学到的知识记录下来。这是我学习的第一个Python项目: “Python 实现Window定时关机”。
环境:
win7 64-bit
python 3.4.3 (下载使用教程)+PyQt5-5.4 (下载使用教程)+sublime
text 3 (下载)
打包工具 : Pyinstaller(下载使用教程)+ pywin32(下载使用教程)
Ui制作:
包括label,label_2,label_3,label_4,lineEdit,lineEdit_2,pushButton七个组件,布局如下图:
控件作用:
Label :显示“ 在 ” Label_2:显示 “ 时 ”
Label_3 :显示 “ 分 ” Label_4 : 用来显示操作后返回的信息
pushButton:用于提交命令
显示窗口:
直接编写的py文件运行时看不到窗口的,我们要加上一些必要的内容才能显示我们的窗口。
代码最前面:
import sys
代码最后面:
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就能看到窗口了
功能:
功能的目标:使Windows自动关机。
实现:
1. 通过python调用cmd,执行命令,而其中的数字是等待用户输入的数据,因此用两个lineEdit中获取的合法数字替换 对应的h和m,用来获得lineEdit内容的方法:然后以h,m替换执行命令中的时,分。
h = self.lineEdit.text()
m = self.lineEdit_2.text()
2.为pushButton添加监听事件click:(其中,self.sd为触发该事件后,需要执行的操作)
self.pushButton = QtWidgets.QPushButton(shut,clicked=self.sd)
完整代码:
# -*—coding:utf-8 -*- # Created: 07-04-2017 # by: python 3.4.3 and PyQt5-5.4 import sys import os # Python执行系统命令方法所用到的包 from PyQt5 import QtCore,QtGui,QtWidgets class Ui_shut(object): #类 继承object类 flag = True def setupUi(self,shut): #方法 #设置窗体的大小 shut.setObjectName("shut") shut.resize(420,180) shut.setFixedSize(420,180) 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) #为pushButton添加监听事件click。 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, 500, 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) #connectSlotsByName是一个QMetaObject类里的静态函数,其作用是用来将QObject * o里的子QObject的某些信号按照其objectName连接到o的槽上。 def retranslateUi(self,shut): _translate = QtCore.QCoreApplication.translate shut.setWindowTitle(_translate("shut", "Windows定时关机器")) self.label.setText(_translate("shut", "在:")) self.label_2.setText(_translate("shut", "时")) self.label_3.setText(_translate("shut", "分")) self.label_4.setText(_translate("shut", " 请输入关机时间")) self.pushButton.setText(_translate("shut", "设置")) def sd(self,shut): #self.sd为触发该事件后,需要执行的操作。 h = self.lineEdit.text() m = self.lineEdit_2.text() if self.flag: self.flag = False try: #捕获所有异常 os.popen('at'+ h + ':' + m + ' shutdown -s') #python执行cmd命令的方法 self.label_4.setText(' 设置成功! 系统将关机在今天 '+h+':'+m) self.pushButton.setText('移除') 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('成功,全部移除') 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,输入15和30点击设置。
这时我们在计算机搜索任务计划,打开任务计划,可以在任务计划程序库中可以发现已经在计划中了,点击移除,刷新任务计划。
成功移除任务,功能实现
打包:
用Python的Pyinstaller组件。cd到shut.py所在目录后,执行cmd命令:
pyinstaller -F -w shut.py
这时,在shut.py所在目录生成dist文件夹。生成的exe路径。dist>>shut(Python源码文件名)>>shut.exe.前面顺利的话,双击shut.exe便会显示前面源码运行同样的窗口和操作。这样,你就可以把shut目录整个发给你的朋友。他们就可以通过双击shut.exe使用你的程序了。
注意:一定要加 ‘-F’,不然会生成很多依赖包
这是我打包后的文件:shut.exe
相关文章推荐
- 实践项目五:python调用百度API实现自动检测翻译
- 项目总结(四)----------Python实现Windows和Linux之间互相传输文件(文件夹)
- Asp.Net大型项目实践系列第二季(二)Windows桌面的ExtJs4实现(含源码) [转]
- Asp.Net大型项目实践系列第二季(二)Windows桌面的ExtJs4实现(含源码)
- python开源项目目录结构参考和django最佳实践:项目布局
- Asp.Net大型项目实践(4)-用NHibernate保存和查询我们的业务领域对象之实现基本的数据库访问(附源码)
- Asp.Net大型项目实践(4)-用NHibernate保存和查询我们的业务领域对象之实现基本的数据库访问(附源码)
- Asp.Net大型项目实践(5)-用Unity实现层与层之间的接口调用(附源码)
- windows 综合项目实践
- 实例讲解hadoop中的hive查询(python语言实现) - 实践检验真理 - 51CTO技术博客
- 实践与共享:可实现“一台主机多人同用”的 Windows MultiPoint Server
- 一个简单的 python 实现 图片同步脚本 ,对于有图片群集的项目有参考价值
- windows 下我们的小项目实践(转载)
- 项目实践之在ASP.NET中实现多文件上传
- [Linux项目实践] 物联网单板测试之任务一:实现流水灯
- 利用配置快速实现信息系统管理项目实践
- windows 下我们的小项目实践
- 配置实现-一个信息管理类项目的实践总结
- Asp.Net大型项目实践(6)-用Unity实现层与层之间的接口调用(附源码)
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(二): NHibernate数据访问层实现