【普通人VS程序员】电脑还可以这样关机,神操作,学到了学到了~(收藏起来慢慢学)

导语

图片

哈喽!大家好,我是木木子。需要源码的滴滴我啦~

无论家用电脑还是公司的电脑,定时开关机都是一个非常实用的功能,只是一般都不太受关注。定

时关机不仅能延长电

脑的使用寿命,还能节约超多的电费呢~哈哈哈哈

害~这不,周天休假一天,但是公司的电脑大部分的小伙伴儿就开了一天,有时候放长假的时候电

脑一开就是几天。这不?隔壁的小姐姐已经被领导发现了,最后的最后这个事情就落到我手里了,

开发一个能定时关机的源码项目供大家使用,并互相提醒每个人一定要下班关机!

定时开关机是个非常简单又实用的功能,跟着本文用不了10分钟你就能学会如何进行操作了哈~

​​​

图片

正文

本文介绍了:普通人关机的习惯方式、以及程序员关机的方式哈!主页(pc端)左侧有源码滴~

并且程序员关机附了2份代码喜欢tkinter的就用tk版本的,喜欢pyqt5的就用这版本的。两个版本大

家自己爱用那个用那个哈~

一、普通人关机

0)优雅的关机

图片

1)快捷键关机

使用快捷键关机相信是大家比较常用的方法了吧?也是最简单方便的方法。

按下快捷键【Alt】+【F4】弹出功能对话框,实现快速关机,又快又准效率极高。

2)任务管理器关机

这个方法和上一个快捷键关机的方法有着异曲同工之妙,按下快捷键【Alt】+【Ctrl】+

【Delete】,打开任务管理器,右下方有个圆形关机按钮,点击即可关机。

3)设置关机时间

这个方法可以实现定时关机,算好想要关机的时间,设置完成后电脑到点就会自动关机。再也不用

因为电脑关机更新而等个半天了。按下快捷键【win】+【R】,在运行对话框内输入《at20:00

shutdown-s》后点击确定,系统就会在晚上8点准时关机。这个方法可以在大家确定能够关机时间

的情况下使用还是非常方便的。

4)鼠标滑动关机

在电脑桌面位置创建一个快捷方式,在出现的对话框内输入“slidetoshutdown”后点下一步。

点击完成即可。

此时电脑桌面上就多了一个快捷方式,想要关机时双击该快捷方式,就会出现以下提示,滑动就可

以关闭电脑了。

二、程序员关机

嘿嘿~虽然确实正常人开关机上面的更方便快速哈!但是源码打包成exe点开更方便啦~尤其是在电

脑需要几个小时之后关机的,需要先让电脑自动完成任务再关机滴~呐这个还蛮方便的~也许,应

该更方便.jpg 强行解释的我2333~这就是娱乐娱乐的代码哈哈哈哈~

1)Pyqt5界面化小程序

1.1  附源码项目

# -*—coding:utf-8 -*-
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')

1.2  效果展示

​2)Tkinter界面化小程序

2.1  附源码项目

from tkinter import ttk
import os
import tkinter.messagebox as message_box

windows = tkinter.Tk()
windows.title("Python定时关机")
# 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="关机命令")
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 的秒数
        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="倒计时关机")
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  效果展示

总结

好啦,定时关机的小项目就over了。以后记得需要定时关机的就用这款代码哈哈哈~想什么时候关

机就什么时候关机嘛~ 源码找我吖!

你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章哦~

🎯完整的免费源码领取处:找我吖!

滴滴我即可吖!

🎉往期推荐阅读——

项目0.1  雪景小程序

【Python码住雪景小程序】雪景人像最强攻略:让你一下美10倍、美醉了(中国人不骗中国人)

项目0.2  跳舞的字符画

【永久免费】恕我直言,这款视频转字符画动漫小工具用起来最爽~

目1.0  超级玛丽

程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】

项目1.1   扫雷

 Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

🎄文章汇总——

项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在文章汇总哦!!欢迎阅读~)

热门文章

暂无图片
编程学习 ·

那些年让我们目瞪口呆的bug

程序员一生与bug奋战,可谓是杀敌无数,见怪不怪了!在某知识社交平台中,一个“有哪些让程序员目瞪口呆的bug”的话题引来了6700多万的阅读,可见程序员们对一个话题的敏感度有多高。 1、麻省理工“只能发500英里的邮件” …
暂无图片
编程学习 ·

redis的下载与安装

下载redis wget http://download.redis.io/releases/redis-5.0.0.tar.gz解压redis tar -zxvf redis-5.0.0.tar.gz编译 make安装 make install快链方便进入redis ln -s redis-5.0.0 redis
暂无图片
编程学习 ·

《大话数据结构》第三章学习笔记--线性表(一)

线性表的定义 线性表:零个或多个数据元素的有限序列。 线性表元素的个数n定义为线性表的长度。n为0时,为空表。 在比较复杂的线性表中,一个数据元素可以由若干个数据项组成。 线性表的存储结构 顺序存储结构 可以用C语言中的一维数组来…
暂无图片
编程学习 ·

对象的扩展

文章目录对象的扩展属性的简洁表示法属性名表达式方法的name属性属性的可枚举性和遍历可枚举性属性的遍历super关键字对象的扩展运算符解构赋值扩展运算符AggregateError错误对象对象的扩展 属性的简洁表示法 const foo bar; const baz {foo}; baz // {foo: "bar"…
暂无图片
编程学习 ·

让程序员最头疼的5种编程语言

世界上的编程语言,按照其应用领域,可以粗略地分成三类。 有的语言是多面手,在很多不同的领域都能派上用场。大家学过的编程语言很多都属于这一类,比如说 C,Java, Python。 有的语言专注于某一特定的领域&…
暂无图片
编程学习 ·

写论文注意事项

参考链接 给研究生修改了一篇论文后,该985博导几近崩溃…… 重点分析 摘要与结论几乎重合 这一条是我见过研究生论文中最常出现的事情,很多情况下,他们论文中摘要部分与结论部分重复率超过70%。对于摘要而言,首先要用一小句话引…
暂无图片
编程学习 ·

安卓 串口开发

上图: 上码: 在APP grable添加 // 串口 需要配合在项目build.gradle中的repositories添加 maven {url "https://jitpack.io" }implementation com.github.licheedev.Android-SerialPort-API:serialport:1.0.1implementation com.jakewhart…
暂无图片
编程学习 ·

2021-2027年中国铪市场调研与发展趋势分析报告

2021-2027年中国铪市场调研与发展趋势分析报告 本报告研究中国市场铪的生产、消费及进出口情况,重点关注在中国市场扮演重要角色的全球及本土铪生产商,呈现这些厂商在中国市场的铪销量、收入、价格、毛利率、市场份额等关键指标。此外,针对…
暂无图片
编程学习 ·

Aggressive cows题目翻译

描述&#xff1a; Farmer John has built a new long barn, with N (2 < N < 100,000) stalls.&#xff08;John农民已经新建了一个长畜棚带有N&#xff08;2<N<100000&#xff09;个牛棚&#xff09; The stalls are located along a straight line at positions…
暂无图片
编程学习 ·

剖析组建PMO的6个大坑︱PMO深度实践

随着事业环境因素的不断纷繁演进&#xff0c;项目时代正在悄悄来临。设立项目经理转岗、要求PMP等项目管理证书已是基操&#xff0c;越来越多的组织开始组建PMO团队&#xff0c;大有曾经公司纷纷建造中台的气质&#xff08;当然两者的本质并不相同&#xff0c;只是说明这个趋势…
暂无图片
编程学习 ·

Flowable入门系列文章118 - 进程实例 07

1、获取流程实例的变量 GET运行时/进程实例/ {processInstanceId} /变量/ {变量名} 表1.获取流程实例的变量 - URL参数 参数需要值描述processInstanceId是串将流程实例的id添加到变量中。变量名是串要获取的变量的名称。 表2.获取流程实例的变量 - 响应代码 响应码描述200指…
暂无图片
编程学习 ·

微信每天自动给女[男]朋友发早安和土味情话

微信通知&#xff0c;每天给女朋友发早安、情话、诗句、天气信息等~ 前言 之前逛GitHub的时候发现了一个自动签到的小工具&#xff0c;b站、掘金等都可以&#xff0c;我看了下源码发现也是很简洁&#xff0c;也尝试用了一下&#xff0c;配置也都很简单&#xff0c;主要是他有一…
暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法&#xff0c;在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较&#xff0c;从而确定目标数是在中间数的左边还是右边&#xff0c;将查…
暂无图片
编程学习 ·

项目经理,你有什么优势吗?

大侠被一个问题问住了&#xff1a;你和别人比&#xff0c;你的优势是什么呢? 大侠听到这个问题后&#xff0c;脱口而出道&#xff1a;“项目管理能力和经验啊。” 听者抬头看了一下大侠&#xff0c;显然听者对大侠的这个回答不是很满意&#xff0c;但也没有继续追问。 大侠回家…
暂无图片
编程学习 ·

nginx的负载均衡和故障转移

#注&#xff1a;proxy_temp_path和proxy_cache_path指定的路径必须在同一分区 proxy_temp_path /data0/proxy_temp_dir; #设置Web缓存区名称为cache_one&#xff0c;内存缓存空间大小为200MB&#xff0c;1天没有被访问的内容自动清除&#xff0c;硬盘缓存空间大小为30GB。 pro…
暂无图片
编程学习 ·

业务逻辑漏洞

身份认证安全 绕过身份认证的几种方法 暴力破解 测试方法∶在没有验证码限制或者一次验证码可以多次使用的地方&#xff0c;可以分为以下几种情况︰ (1)爆破用户名。当输入的用户名不存在时&#xff0c;会显示请输入正确用户名&#xff0c;或者用户名不存在 (2)已知用户名。…