You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
4.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import tkinter as tk
from tkinter import messagebox
import os
import zipfile
window = tk.Tk()
window.title("Homework Packer 1.0 Beta")
window.geometry("800x600") # 窗口设置
window.resizable(0, 0) # 固定窗口大小
var = tk.StringVar() # 输入框内容
num = 1 # 已生成的作业数量+1
source = str() # 单个c源代码的内容
path = str() # 打包相对路径
#__Labels
head = tk.Label(window, text="请将第{num}题源代码复制到框中:".format(num=num),
font=('Arial', 15), width=20, height=1)
# 这里的长宽以字符为单位
head.place(x=20, y=100, anchor='nw')
name = tk.Label(window, text="请输入姓名:",font=('Arial', 15), )
name.place(x=2, y=5, anchor='nw')
xuehao = tk.Label(window, text="请输入学号:",font=('Arial', 15), )
xuehao.place(x=2, y=35, anchor='nw')
ok_txt = tk.Label(window, text="点击确定即可\n以框中内容\n生成一个.py文件:", font=('Arial', 15))
ok_txt.place(x=600, y=20, anchor='nw')
#__Entrys
name_en = tk.Entry(window)
name_en.place(x=122, y=8, anchor='nw')
xuehao_en = tk.Entry(window)
xuehao_en.place(x=122, y=38, anchor='nw')
#__Buttons
def make_zip(floder, backupfilename): # floder要打包的文件夹backupfilename:指定文件名
backupfilename = backupfilename + '.zip'
f = zipfile.ZipFile(backupfilename, 'w') # c创建一个zip对象
for floderName, subFolders, fileNames in os.walk(floder):
f.write(floderName)
for subFolder in subFolders:
f.write(os.path.join(floderName, subFolder))
for fileName in fileNames:
f.write(os.path.join(floderName, fileName))
f.close()
def ok_hit(): ##确认 键的功能
global path
path = "./{xuehao}_{name}".format(xuehao=xuehao_en.get(),name=name_en.get())
folder = os.path.exists(path)
if not folder:
os.makedirs(path)
source = content.get("0.0", "end")
global num
with open(path + '/' + "{num}题.py".format(num=num), 'w') as f:
f.write(source)
num += 1
head.config(text="请将第{num}题源代码复制到框中:".format(num=num))
content.delete("0.0", 'end')
pass
def zip_them_hit(): ##打包键功能
make_zip(path, "{xuehao}_{name}".format
(xuehao=xuehao_en.get(), name=name_en.get()))
messagebox.showinfo(message="你的 {num} 个c语言源代码\n已经打包入zip压缩包中\n\
在当前目录即可找到".format(
num=num - 1), title="Packing has been complished!")
os.system("explorer " + os.getcwd())
window.destroy() ##结束程序
pass
def about_file(): ##文件介绍
win = tk.Tk()
win.title("关于本软件")
win.geometry("400x500") # 窗口设置
win.resizable(0, 0) # 固定窗口大小
tk.Label(win, text="========================================\n\
使用方法很简单:\n\
1.输入姓名和学号\n\
2.每完成一题编程作业就将源码复制到框里。\n\
3.点击<确定>。\n\
4.重复23步直到作业做完\n\
5.点击<打包成zip> 即可在程序所在的目录\n\
下找到压缩包。\n\
\n\
(包名字都是按本班 C语言作业命\n\
名要求设置的,所以这个软件基本上就给自\n\
己人使用。)\n\
========================================\n\
========================================", anchor='ne').pack()
pass
# # # # # # # # # # # ## 创建Buttons
ok = tk.Button(window, text="确 定", command=ok_hit, width=10, height=2, font=40)
ok.place(x=650, y=120, anchor='nw')
zip_them = tk.Button(window, text="打包成zip", command=zip_them_hit, width=10,
height=2, font=40)
zip_them.place(x=650, y=250, anchor='nw')
# about HMPacker1.0Beta
about = tk.Button(window, text="关于本软件", command=about_file, font=5)
about.place(x=600, y=550, anchor='nw')
#__Texts
content = tk.Text(window, width=80, height=30)
content.place(x=20, y=130, anchor='nw')
about_file() # 运行的时候打开以下about_file 因为里面有操作方法
window.mainloop()