Python で Windows のスケジュールされたシャットダウン機能を実装するサンプル コード

高洛峰
リリース: 2017-03-22 09:17:48
オリジナル
2366 人が閲覧しました

この新しい友人 Python を私に紹介してくれたのは、最初の数人のクローラーでした。知り合ってまだ数日しか経っていませんが、説明できない暗黙の了解を感じています。他の場所でアイデアが見つからない場合でも、Python でいつでも解決策を見つけることができます。自動シャットダウンは、大きなファイルをダウンロードしたり、プログラムを実行したりするときに使用できます。このプログラムは単純すぎるため、改善の余地はたくさんあります。以下のテキスト:

#ui 制作:

いつものように、作者は Qt を使用して、label、label_2、label_3、lable_4、lineEdit、lineEdit_2、pushButton コンポーネントを含む必要な ui を作成しました。一般的なレイアウトは次のとおりです

Python で Windows のスケジュールされたシャットダウン機能を実装するサンプル コード

2 つの lineEdit が待機中 ユーザーは希望のシャットダウン時間を入力します。次のラベルは、操作後の戻り情報を表示するために使用されます。 PushButton はコマンドを送信するために使用されます。 UIの制作が完了しました。

uiをpyファイルに変換しました:

ここでPyQt5をインストールし、環境変数を追加しました。したがって、変換された cmd コマンド (ui があるディレクトリに cd します):

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_())
ログイン後にコピー
を追加します。最後

shutdown.py を実行するとウィンドウが表示されます。

#関数実装:

Windows を自動的にシャットダウンするプログラムの望ましい機能を考えてください。 cmd コマンドは良い選択です。そこで作者は、Python で cmd コマンドを実行する方法を探しました。

os.popen('at 22:30 shutdown -s')
ログイン後にコピー

cmd を呼び出してコマンドを実行します。このうち、22と30はユーザー入力待ちのデータです。したがって、対応する h と m は、2 つの lineEdit で取得した有効な数値に置き換える必要があります。 lineEdit の内容を取得するメソッドを使用します:

h = self.lineEdit.text()
m = self.lineEdit_2.text()
ログイン後にコピー

次に、実行コマンドの時間と分を h、m に置き換えます

次に、pushButton 部分があります。 イベントのリスナーを追加しますpushButtonをクリックします。

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 のスケジュールされたシャットダウン機能を実装するサンプル コード

#実行効果:

shutdown.py を実行し、12 と 53 を入力して [設定] をクリックすると、タスクを表示する 計画:

Python で Windows のスケジュールされたシャットダウン機能を実装するサンプル コード

Python で Windows のスケジュールされたシャットダウン機能を実装するサンプル コード

ミッションがすでに計画されていることを確認します。 [削除] をクリックしてタスク プランを更新します。

Python で Windows のスケジュールされたシャットダウン機能を実装するサンプル コード

タスクは正常に削除され、関数が実装されました

もちろん、これはユーザーが Python をインストールし、関連コンポーネントをインストールした場合にのみ実行できます。任意のWindowsで使用する場合は以下の操作が必要です。

#Packaging:

作者はパッケージ化にPythonのPyinstallerコンポーネントを使用しています。 shutdown.py が存在するディレクトリに cd した後、cmd コマンドを実行します:

pyinstaller -w shut.py
ログイン後にコピー

このとき、shutdown.py が存在するディレクトリに dist フォルダーが生成されます。生成されたexeパス。 dist>>shut (Python ソースコードファイル名)>>shut.exe うまくいけば、shut.exe をダブルクリックすると、先ほどのソースコードと同じ画面と動作が表示されます。このようにして、シャットダウン ディレクトリ全体を友人に送信できます。その後、shutdown.exe をダブルクリックすることでプログラムを使用できるようになります。

以上がPython で Windows のスケジュールされたシャットダウン機能を実装するサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート