需求来源:
我们班的c语言作业交的时候很麻烦,得把每一题都独立放到一个文件里面,然后放入同一个文件夹,然后压缩打包。。。还得命名成一定的格式。。。
我嫌烦。
于是有了制作这个小工具的想法。
没啥亮点,直接上代码:
import tkinter as tk
from tkinter import ttk #这个没用到
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生成一个c文件:",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}_题.c".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.重复2,3步直到作业做完\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()
主要就是一个tkinter的简单应用叭。主要的逻辑还是很简单的。获取文本输入,获取文件内容,打包压缩。。。结束。
使用过程:
输入姓名学号,将第一题内容输入框中:
2.然后点击确定,完成第一题。继续如此,按序号填入2,3,···等题的内容。
3.完成所有题后,点击打包成zip,便结束了。
4。在同目录下即可找到打包好的作业:
ps:代码质量一般叭,毕竟是年轻的时候写的。