目录
一、背景介绍
Windows电脑开机后跳出一个对话框弹窗(GUI界面),提示用户填写相关信息,用户填写完内容后自动保存到事先指定路径的Excel表里。为了保证数据不被覆盖,每次写入数据时只在Excel的表末尾写入新数据。
二、具体实现
2.1 编写Python脚本
脚本的主要功能是启动一个对话框,然后将用户输入的信息保存到Excel文件中。其中星期几那一栏的数据,程序会根据运行日期自动填写。
首先,你需要安装一些必要的Python库——tkinter
用于创建对话框,pandas
用于操作Excel文件。你可以使用以下命令进行安装:
pip install tkinter pandas
按下Windows键 + R,然后在打开的运行对话框中输入cmd点击确定,输入上述命令
然后,你需要创建一个Python脚本(.py),如下所示
注意:请在代码中设置好Excel文件的保存路径
请将 D:\download2.0\code\output.xlsx 替换为你想保存的实际路径。
import tkinter as tk
from tkinter import messagebox
import pandas as pd
import os
from datetime import datetime
# 创建excel的列名
column_names = ['教师', '第几周', '星期几', '第几节', '设备故障', '建议']
# Excel文件名称,请设置你想要的保存路径
file_name = "D:\download2.0\code\output.xlsx"
# 创建对话框窗口
window = tk.Tk()
window.title('教学日志')
window.geometry('300x300')
# 创建标签和输入框
labels = [tk.Label(window, text=i).grid(row=idx, column=0) for idx, i in enumerate(column_names)]
# 用 Text 小部件替换第四和第五个输入框以允许多行输入
# entries = [tk.Entry(window) for _ in column_names]
entries = [tk.Entry(window), tk.Entry(window), tk.Entry(window), tk.Entry(window), tk.Text(window, width=30, height=5), tk.Text(window, width=30, height=7)]
# 英文星期名称到中文星期名称的映射
weekdays_en_to_ch = {
'Monday': '星期一',
'Tuesday': '星期二',
'Wednesday': '星期三',
'Thursday': '星期四',
'Friday': '星期五',
'Saturday': '星期六',
'Sunday': '星期日',
}
entries[2].insert(0, weekdays_en_to_ch[datetime.today().strftime('%A')]) # 自动填写今天是星期几(中文)
# entries[3].config(width=60) # 设置教学日志输入框的长度为60
# entries[4].config(width=60) # 设置教学日志输入框的长度为60
for idx, entry in enumerate(entries):
entry.grid(row=idx, column=1, sticky="w") # 设置输入框左对齐
# 创建函数,当用户点击按钮时收集输入的信息然后添加到excel末尾
def submit():
user_info = {n: e.get() for n, e in zip(column_names, entries)}
user_df = pd.DataFrame([user_info])
if os.path.isfile(file_name): # 如果文件已存在,那么追加数据
df = pd.read_excel(file_name)
df = df.append(user_df, ignore_index=True)
else: # 如果文件不存在,那么创建新文件
df = user_df
df.to_excel(file_name, index=False)
messagebox.showinfo('Message', '信息已成功保存到excel')
window.destroy() # 提交成功后退出程序
# 创建提交按钮
submit_button = tk.Button(window, text='提交', command=submit)
submit_button.grid(row=len(entries), column=1)
# 插入本地图片
# from PIL import Image, ImageTk
# try:
# img_path = 'D:\download2.0\code\wechat.png' # 更改为你的图片路径
# image = Image.open(img_path)
# photo = ImageTk.PhotoImage(image)
# label_img = tk.Label(window, image=photo)
# label_img.image = photo # keep a reference to the image (Python will garbage collect it otherwise)
# label_img.grid(row=0, column=2, rowspan=len(entries) + 1) # let the image span all rows
# except IOError:
# print('Image path is invalid. Please check the path and try again.')
window.mainloop()
这个脚本会创建一个包含六个输入框的窗口,用户可以在其中输入教师、第几周、星期几(自动获取)、第几节、设备故障和建议。点击保存按钮后,这些信息会被添加到Excel文件的最后一行。
你可以使用记事本来创建这个文件,把上面的Python代码复制进去,然后将该文件后缀改成.py即可。
2.2 设置开机自启动脚本
在Windows上,你可以通过以下步骤将Python脚本设置为开机自启动:
1、首先,你需要创建一个批处理文件(.bat),该文件会在运行时执行你的Python脚本。你可以使用记事本来创建这个文件。在文件中,你需要输入以下命令:
@echo off
python C:\path\to\your\script.py
请将
C:\path\to\your\script.py
替换为你的Python脚本的实际路径。然后,保存这个文件,文件名可以自定义,但扩展名必须是.bat
先在txt文件输入这些内容,再通过重命名把后缀改成bat。
此时,双击该批处理文件(.bat),如果成功跳出对话框弹窗,则说明代码可以正常运行。接着往下看👇
2、接下来,你需要将这个批处理文件(.bat)添加到Windows的启动文件夹。启动文件夹的位置通常是C:\Users\YourUserName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。
按下Windows键 + R,然后在打开的运行对话框中输入:
shell:startup
3、将你刚刚创建的批处理文件(.bat)复制或移动到启动文件夹。
完成以上步骤后,每次你的电脑启动时,Windows就会自动运行你的Python脚本。
如果出现上述操作遇到问题请往下看👇
请注意,这个方法假设你已经将Python添加到了系统的PATH环境变量。如果没有,你需要在批处理文件(.bat)中使用完整的Python路径,如
C:\Python37\python.exe
。
此外,如果你的电脑有多个用户账户,这个方法只会在你的用户账户登录时运行Python脚本。如果你希望在任何用户登录时都运行Python脚本,你需要将批处理文件添加到所有用户的启动文件夹,该文件夹的位置通常是C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
。