用Python写一个自动关机程序,并打包成exe可执行程序

发表于:2022-1-18 09:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:程序员Jiejie    来源:今日头条

  1、实现效果
  2、实现步骤
  模块导入
  import os,sys,time  
  from PyQt5 import QtCore,QtWidgets,QtGui 
  窗口设置
  def pageShow(self,page): 
    #设置窗口的位置和大小 
    page.setGeometry(400,400,400,200) 
    #设置窗口的标题 
    page.setWindowTitle('Window shutdown') 
    #设置窗口的图标 
    #page.setWindowIcon(QtGui.QIcon('#ddffgg')) 
    #设置工具中提示的字体样式 
    QtWidgets.QToolTip.setFont(QtGui.QFont('SansSerif',10)) 
    #创建一个提示 
    page.setToolTip('这是Window关机工具') 
  创建一个文本标签
  self.label = QtWidgets.QLabel(page)  
  self.label.setGeometry(QtCore.QRect(60, 20, 120, 45)) 
  self.label.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold)) 
  创建一个文本标签和时间栏框
  self.label2 = QtWidgets.QLabel(page)  
  self.label2.setGeometry(QtCore.QRect(100, 55, 40, 51)) 
  设置该文件的字体样式,大小。
  self.label2.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold)) 
  创建一个日期时间文本框,QDateEdit表示添加日期文本框,QTimeEdit表示添加时间文本框。
  self.time = QtWidgets.QDateTimeEdit(page) 
  设置日期时间框的位置大小依次是
  self.time.setGeometry(QtCore.QRect(140, 70, 180, 25))  
  self.time.setDisplayFormat("yyyy-MM-dd HH:mm:ss") 
  设置日期可以使用日历插件
  self.time.setCalendarPopup(True) 
  根据PyQt方法获取系统的当前时间
  now = QtCore.QDateTime.currentDateTime()  
  now_time = now.toString(QtCore.Qt.ISODate) 
  将当前系统时间赋值给时间框中
  now_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())  
  self.time.setDateTime(QtCore.QDateTime.fromString(now_time, 'yyyy-MM-dd hh:mm:ss')) 
  一个按钮并设置添加单击事件
  self.btn = QtWidgets.QPushButton(page,clicked=self.shut) 
  #self.btn.clicked.connect(self.shut(page)) 
  self.btn.setToolTip('这里是提交按钮') 
  显示默认尺寸
  #self.btn.resize(btn.sizeHint()) 
  self.btn.move(110,110) 
  创建一个按钮并设置清除关机任务单击事件
  self.btn1 = QtWidgets.QPushButton(page,clicked=self.cleart) 
  #self.btn.clicked.connect(self.shut()) 
  self.btn1.setToolTip('这里是清除任务按钮') 
  显示默认尺寸
  self.btn1.move(210,110) 
  设置一个文本提示框
  self.text = QtWidgets.QLabel(page) 
  self.text.setGeometry(QtCore.QRect(25, 150, 350, 25)) 
  self.text.setFont(QtGui.QFont("Roman times",14,QtGui.QFont.Bold)) 
   
  self.setUI(page) 
  page.show() 
  设置工具窗口中显示的部件文本信息
  def setUI(self,page): 
    _translate = QtCore.QCoreApplication.translate  
   
    self.label.setText(_translate("page","请输入关机时间")) 
    self.label2.setText(_translate("page","日期:")) 
    self.btn.setText(_translate("page","提交")) 
    self.btn1.setText(_translate("page","清除")) 
    self.text.setText(_translate("page","请设置关机时间!")) 
  添加关机计划
  def shut(self,page): 
    datetime = self.time.text() 
    t1 = time.strptime(datetime,"%Y-%m-%d %H:%M:%S") 
    t = int(time.mktime(t1)) 
    nq = int(time.time()) 
    d = t-nq 
    #print(d) 
    #exit() 
    if d>0: 
      try: 
        os.system('shutdown -s -t %d' % d) 
        self.text.setText("电脑将在%s关机!" % datetime) 
        #self.time.setDateTime('1') 
      except: 
        self.text.setText("设置失败!") 
    else: 
      self.text.setText("日期设置错误!") 
  清除关机计划
  def cleart(self,page): 
    try: 
      os.system('shutdown -a') 
      self.text.setText("已经清除关机任务!") 
    except: 
      self.text.setText("清除任务失败!")   
   
  if __name__=='__main__': 
  创建应用程序和对象
  app = QtWidgets.QApplication(sys.argv) 
  page = QtWidgets.QWidget() 
  ui = guanji() 
  ui.pageShow(page) 
  sys.exit(app.exec_()) 
  3、全部代码
  import os,sys,time 
  from PyQt5 import QtCore,QtWidgets,QtGui 
   
  class guanji(object): 
   
    def pageShow(self,page): 
      #设置窗口的位置和大小 
      page.setGeometry(400,400,400,200) 
      #设置窗口的标题 
      page.setWindowTitle('Window shutdown') 
      #设置窗口的图标 
      #page.setWindowIcon(QtGui.QIcon('#ddffgg')) 
      #设置工具中提示的字体样式 
      QtWidgets.QToolTip.setFont(QtGui.QFont('SansSerif',10)) 
      #创建一个提示 
      page.setToolTip('这是Window关机工具') 
   
      self.label = QtWidgets.QLabel(page) 
      self.label.setGeometry(QtCore.QRect(60, 20, 120, 45)) 
      self.label.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold)) 
      self.label2 = QtWidgets.QLabel(page) 
      self.label2.setGeometry(QtCore.QRect(100, 55, 40, 51)) 
      self.label2.setFont(QtGui.QFont("Roman times",10,QtGui.QFont.Bold)) 
      self.time = QtWidgets.QDateTimeEdit(page) 
      self.time.setGeometry(QtCore.QRect(140, 70, 180, 25)) 
      self.time.setDisplayFormat("yyyy-MM-dd HH:mm:ss") 
      self.time.setCalendarPopup(True) 
      now_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) 
      self.time.setDateTime(QtCore.QDateTime.fromString(now_time, 'yyyy-MM-dd hh:mm:ss')) 
   
      self.btn = QtWidgets.QPushButton(page,clicked=self.shut) 
      self.btn.setToolTip('这里是提交按钮') 
      self.btn.move(110,110) 
   
      self.btn1 = QtWidgets.QPushButton(page,clicked=self.cleart) 
      self.btn1.setToolTip('这里是清除任务按钮') 
      self.btn1.move(210,110) 
      self.text = QtWidgets.QLabel(page) 
      self.text.setGeometry(QtCore.QRect(25, 150, 350, 25)) 
      self.text.setFont(QtGui.QFont("Roman times",14,QtGui.QFont.Bold)) 
   
      self.setUI(page) 
      page.show() 
    def setUI(self,page): 
      _translate = QtCore.QCoreApplication.translate  
   
      self.label.setText(_translate("page","请输入关机时间")) 
      self.label2.setText(_translate("page","日期:")) 
      self.btn.setText(_translate("page","提交")) 
      self.btn1.setText(_translate("page","清除")) 
      self.text.setText(_translate("page","请设置关机时间!")) 
   
    def shut(self,page): 
      datetime = self.time.text() 
      t1 = time.strptime(datetime,"%Y-%m-%d %H:%M:%S") 
      t = int(time.mktime(t1)) 
      nq = int(time.time()) 
      d = t-nq 
      if d>0: 
        try: 
          os.system('shutdown -s -t %d' % d) 
          self.text.setText("电脑将在%s关机!" % datetime) 
        except: 
          self.text.setText("设置失败!") 
      else: 
        self.text.setText("日期设置错误!") 
   
    def cleart(self,page): 
      try: 
        os.system('shutdown -a') 
        self.text.setText("已经清除关机任务!") 
      except: 
        self.text.setText("清除任务失败!")   
   
  if __name__=='__main__': 
    app = QtWidgets.QApplication(sys.argv) 
    page = QtWidgets.QWidget() 
    ui = guanji() 
    ui.pageShow(page) 
    sys.exit(app.exec_()) 

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号