通過Python實現(xiàn)電腦定時關(guān)機的兩種方法
導(dǎo)語
無論家用電腦還是公司的電腦,定時開關(guān)機都是一個非常實用的功能,只是一般都不太受關(guān)注。定時關(guān)機不僅能延長電腦的使用壽命,還能節(jié)約超多的電費呢~哈哈哈哈?
害~這不,周天休假一天,但是公司的電腦大部分的小伙伴兒就開了一天,有時候放長假的時候電腦一開就是幾天。這不?隔壁的小姐姐已經(jīng)被領(lǐng)導(dǎo)發(fā)現(xiàn)了,最后的最后這個事情就落到我手里了,開發(fā)一個能定時關(guān)機的源碼項目供大家使用,并互相提醒每個人一定要下班關(guān)機!
定時開關(guān)機是個非常簡單又實用的功能,跟著本文用不了10分鐘你就能學(xué)會如何進(jìn)行操作了哈~

本文介紹了:普通人關(guān)機的習(xí)慣方式、以及程序員關(guān)機的方式哈!主頁(pc端)左側(cè)有源碼滴~
并且程序員關(guān)機附了2份代碼喜歡tkinter的就用tk版本的,喜歡pyqt5的就用這版本的。兩個版本大家自己愛用那個用那個哈~
一、普通人關(guān)機
0)優(yōu)雅的關(guān)機

1)快捷鍵關(guān)機
使用快捷鍵關(guān)機相信是大家比較常用的方法了吧?也是最簡單方便的方法。
按下快捷鍵【Alt】+【F4】彈出功能對話框,實現(xiàn)快速關(guān)機,又快又準(zhǔn)效率極高。

2)任務(wù)管理器關(guān)機
這個方法和上一個快捷鍵關(guān)機的方法有著異曲同工之妙,按下快捷鍵【Alt】+【Ctrl】+
【Delete】,打開任務(wù)管理器,右下方有個圓形關(guān)機按鈕,點擊即可關(guān)機。

3)設(shè)置關(guān)機時間
這個方法可以實現(xiàn)定時關(guān)機,算好想要關(guān)機的時間,設(shè)置完成后電腦到點就會自動關(guān)機。再也不用因為電腦關(guān)機更新而等個半天了。按下快捷鍵【win】+【R】,在運行對話框內(nèi)輸入《at 20:00 shutdown -s》后點擊確定,系統(tǒng)就會在晚上8點準(zhǔn)時關(guān)機。這個方法可以在大家確定能夠關(guān)機時間的情況下使用還是非常方便的。

4)鼠標(biāo)滑動關(guān)機
在電腦桌面位置創(chuàng)建一個快捷方式,在出現(xiàn)的對話框內(nèi)輸入“slidetoshutdown”后點下一步。

點擊完成即可。
此時電腦桌面上就多了一個快捷方式,想要關(guān)機時雙擊該快捷方式,就會出現(xiàn)以下提示,滑動就可以關(guān)閉電腦了。

二、程序員關(guān)機
嘿嘿~雖然確實正常人開關(guān)機上面的更方便快速哈!但是源碼打包成exe點開更方便啦~尤其是在電腦需要幾個小時之后關(guān)機的,需要先讓電腦自動完成任務(wù)再關(guān)機滴~吶這個還蠻方便的~也許,應(yīng)該更方便.jpg 強行解釋的我2333~這就是娛樂娛樂的代碼哈哈哈哈~
1)Pyqt5界面化小程序
1.1? 附源碼項目
# -*—coding:utf-8 -*-
import sys
import os # Python執(zhí)行系統(tǒng)命令方法所用到的包
from PyQt5 import QtCore,QtGui,QtWidgets
class Ui_shut(object): #類 繼承object類
flag = True
def setupUi(self,shut): #方法
#設(shè)置窗體的大小
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)) #標(biāo)簽的位置
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添加監(jiān)聽事件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類里的靜態(tài)函數(shù),其作用是用來將QObject * o里的子QObject的某些信號按照其objectName連接到o的槽上。
def retranslateUi(self,shut):
_translate = QtCore.QCoreApplication.translate
shut.setWindowTitle(_translate("shut", "Windows定時關(guān)機器"))
self.label.setText(_translate("shut", "在:"))
self.label_2.setText(_translate("shut", "時"))
self.label_3.setText(_translate("shut", "分"))
self.label_4.setText(_translate("shut", " 請輸入關(guān)機時間"))
self.pushButton.setText(_translate("shut", "設(shè)置"))
def sd(self,shut): #self.sd為觸發(fā)該事件后,需要執(zhí)行的操作。
h = self.lineEdit.text()
m = self.lineEdit_2.text()
if self.flag:
self.flag = False
try: #捕獲所有異常
os.popen('at'+ h + ':' + m + ' shutdown -s') #python執(zhí)行cmd命令的方法
self.label_4.setText(' 設(shè)置成功! 系統(tǒng)將關(guān)機在今天 '+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')
1.2? 效果展示

?2)Tkinter界面化小程序
2.1? 附源碼項目
from tkinter import ttk
import os
import tkinter.messagebox as message_box
windows = tkinter.Tk()
windows.title("Python定時關(guān)機")
# window 居中
windows.update() # update window ,must do
curWidth = 280 # get current width
curHeight = windows.winfo_reqheight() # get current height
scnWidth, scnHeight = windows.maxsize() # get screen width and height
# now generate configuration information
config = '%dx%d+%d+%d' % (curWidth, curHeight,
(scnWidth - curWidth) / 2, (scnHeight - curHeight) / 2)
windows.geometry(config)
# root 容器
root = ttk.LabelFrame(windows, text="關(guān)機命令")
root.grid(column=0, row=0, padx=15, pady=15)
# 提醒文本
tkinter.Label(root, text="輸入時間").grid(column=0, row=0, sticky=tkinter.W)
tkinter.Label(root, text="選擇").grid(column=1, row=0)
# 存儲輸入的值
time = tkinter.StringVar()
unit = tkinter.StringVar()
# 輸入框
time_edit = tkinter.Entry(root, width=10, textvariable=time)
time_edit.grid(column=0, row=1, padx=4, sticky=tkinter.W)
time_edit.focus()
# 下拉單位選擇
unit_arr = ('時', '分', '秒')
unit_chosen = ttk.Combobox(root, width=6, textvariable=unit, state='readonly')
unit_chosen['values'] = unit_arr
unit_chosen.grid(column=1, row=1)
unit_chosen.current(0)
def change_edit(to_time):
time_edit.delete(0, 10)
time_edit.insert(0, to_time)
unit_chosen.current(1)
# start
def start():
if time.get() and unit.get():
message_box.showwarning("選擇完畢", "你的電腦將在多少 %s %s" % (time.get(), unit.get()))
# shutdown 的秒數(shù)
count_down_second = int(time.get())
if unit.get() == 'hour':
count_down_second *= 3600
elif unit.get() == 'minute':
count_down_second *= 60
# execute
os.system("shutdown -s -t %s" % count_down_second)
windows.quit()
# cancel
def cancel():
os.system("shutdown -a")
windows.quit()
# start 按鈕
start_action = tkinter.Button(root, text="START", command=start)
start_action.grid(column=2, row=1)
# 文本
tip_label = tkinter.Label(root, text="倒計時關(guān)機")
tip_label.grid(row=2, column=0, pady=2)
# 快捷選擇時間
fram = tkinter.Frame(root)
fram.grid(row=3, column=0, columnspan=3)
# 常用的時間
for i in range(2, 7):
button = tkinter.Button(fram, text=str(i * 15) + "min", command=lambda x=i: change_edit(str(x * 15)))
button.grid(row=0, column=i - 2, padx=2, pady=2, sticky=tkinter.W)
# cancel 按鈕
cancel_action = tkinter.Button(root, text="CANCEL", command=lambda: cancel())
cancel_action.grid(row=4, column=1, pady=10, sticky=tkinter.W)
2.2? 效果展示

以上就是通過Python實現(xiàn)電腦定時關(guān)機的兩種方法的詳細(xì)內(nèi)容,更多關(guān)于Python電腦定時關(guān)機的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python pandas.DataFrame.loc函數(shù)使用詳解
這篇文章主要介紹了python pandas.DataFrame.loc函數(shù)使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
python中JSON數(shù)據(jù)格式的詳細(xì)使用教程
這篇文章主要給大家介紹了關(guān)于python中JSON數(shù)據(jù)格式的詳細(xì)使用,JSON是一種用于存儲和交換數(shù)據(jù)的語法,JSON是文本,使用JavaScript對象表示法編寫,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
詳解python中g(shù)roupby函數(shù)通俗易懂
這篇文章主要介紹了詳解python中g(shù)roupby函數(shù)通俗易懂,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Python中使用json.load()和json.loads()加載json數(shù)據(jù)的方法實例
在python編程中,我們經(jīng)常要用到j(luò)son對象作為數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關(guān)于Python中使用json.load()和json.loads()加載json數(shù)據(jù)的方法實例,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

