需求来源:

我们班的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\
(包名字都是按咱数据201/202 C语言作业命\n\
名要求设置的,所以这个软件基本上就给自\n\
己人使用。)\n\
========================================\n\
\n\
这个软件纯属一个用来练手的小工具,所以多\n\
有不足,还请包含。\n\
本软件也存在着很多未知和已知的bugs,如果\n\
不按正常地使用,则会出现未知的结果。\n\
。。本人概不负责。\n\
关于本软件的一切解释权终归于我(233)\n\
\n\
\n\
\n\
\n\
                   ------by Fighlone\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()

 


 

使用过程:

输入姓名学号,将第一题内容输入框中:

 

 

2.然后点击确定,完成第一题。继续如此,按序号填入2,3,···等题的内容。

 

 

 

3.完成所有题后,点击打包成zip,便结束了。

 

4。在同目录下即可找到打包好的作业:

 

 

 

 


 

ps:我只是为了记录这个项目的代码所以发了这个随笔。。。代码质量我也承认很糟糕。

如果您愿意浪费时间提出宝贵意见我必定洗耳恭听!