用python写一个小软件

背景:1.在电子厂工作,现在部门只剩下我这个小的,什么事情都需要自己弄(说多了心疼),其中由一个钢网(生产的一种工装治具)需要每天去管理,决定弄一个程序减轻自己的工作任务。自学了一段时间,试试给自身搞一个小项目。走起~~~

2.使用的python 工具:tkinter 、sqlite3

3.基本框架和实现功能


4.目标。坦白说,能跑起来,不要一堆异常就好。目前不知道用不用面向对象类,想慢慢学一下类是怎么写的


5,代码(2021-2-5)

5-0.大概的GUI界面框架如下:

5-1.GUI界面代码

def gui():
    root=tk.Tk() #框架tk对象
    root.title("stencil")
    root.iconbitmap(r"net.ico")
    root.geometry("1400x600")
    root.columnconfigure(1, weight=10)
    root.rowconfigure(0, weight=1)
    #树状标签
    tree=ttk.Treeview(root,show="tree")
    tree.grid(row=0,column=0,sticky="snw")
    base=tree.insert("",0,text="钢网",value="0")
    #1.钢网录入和报废
    control=tree.insert(base,0,text="钢网信息登记",value="0")
    login=tree.insert(control,0,text="注册",value="1")
    scarp=tree.insert(control,1,text="报废",value="2")
    #2.钢网查询与日常点检
    search=tree.insert(base,1,text="钢网查询与日常点检",value="3")
    #3.数据维护
    data=tree.insert(base,2,text="数据维护",value="4")
    importfile=tree.insert(data,0,text="数据表导入",value="5")
    exportfile=tree.insert(data,1,text="导出数据",value="6")
    #think 双击鼠标事件通过value值的不同,触发不同的界面
    #创建notebook多界面对象 分为界面note_1和note_2
    note=ttk.Notebook(root,)
    note.grid(row=0,column=1,sticky="nswe")
    note_1=tk.Frame(note,bg="blue") #界面note_1 使用Frame组件,再向里面放一些功能组件\
    note.columnconfigure(0,weight=1)
    note_1.grid(row=0,column=0,sticky="ew")
    note.add(note_1,text="钢网信息登记")
    note_1.columnconfigure(0,weight=1)
    #界面note_1放置组件labelFrame
    f1=ttk.LabelFrame(note_1,text="钢网信息填写")
    f1.grid(row=0, column=0, pady=3,padx=3,sticky="nwe")
    #l(1-7)和i(1-7)为标签和输入框的设置,放在LabelFrame组件f1里面
    l = tk.Label(f1, text="钢网编号:").grid(row=1, column=1, sticky=tk.E)
    i = tk.Entry(f1, width=10)
    i.grid(row=1, column=2, sticky=tk.E)
    l1 = tk.Label(f1, text="钢网名称:").grid(row=2, column=1, sticky=tk.E)
    i1 = tk.Entry(f1, width=10)
    i1.grid(row=2, column=2, sticky=tk.E)
    l2 = tk.Label(f1, text="k3编号:").grid(row=1, column=3, sticky=tk.E)
    i2 = tk.Entry(f1, width=10)
    i2.grid(row=1, column=4, sticky=tk.E)
    l3 = tk.Label(f1, text="制作日期:").grid(row=2, column=3, sticky=tk.E)
    i3 = tk.Entry(f1, width=10)
    i3.grid(row=2, column=4, sticky=tk.E)
    l4 = tk.Label(f1, text="客户:").grid(row=1, column=5, sticky=tk.E)
    i4 = tk.Entry(f1, width=10)
    i4.grid(row=1, column=6, sticky=tk.E)
    l5 = tk.Label(f1, text="PCB物料编号:").grid(row=2, column=5, sticky=tk.E)
    i5 = tk.Entry(f1, width=10)
    i5.grid(row=2, column=6, sticky=tk.E)
    l6 = tk.Label(f1, text="拼板数:").grid(row=1, column=7, sticky=tk.E)
    i6 = tk.Entry(f1, width=10)
    i6.grid(row=1, column=8, sticky=tk.E)
    l7 = tk.Label(f1, text="厚度:").grid(row=2, column=7, sticky=tk.E)
    i7 = tk.Entry(f1, width=10)
    i7.grid(row=2, column=8, sticky=tk.E)
    #treeview组件显示设置
    column = ["钢网编号", "钢网名称", "K3编号", "制作日期", "客户", "PCB物料编号", "拼板数", "厚度", "印刷次数"]#列名#列名印刷默认为0
    width=[60, 400, 100, 90, 50, 200, 50,50,50]  #列宽度设置
    treeShow=ttk.Treeview(note_1,show="headings",column=column,height=24)
    treeShow.grid(row=1,column=0,sticky="ewsn",)
    for i in range(len(column)):
        treeShow.heading(column[i],text=column[i]) #列名的设置
        treeShow.column(column=column[i],width=width[i])#treeview对象没有width属性,由每列的宽度之和组成
    root.mainloop()

5-1-1.问题1:关于grid的布局,给界面填充卡了一下下,后来参考这篇文章 blog.csdn.net/acaic/art

对行列进行权重配置,root.columnconfigure(1, weight=10) 和root.rowconfigure(1, weight=10),再使用sticky=“wens”,才能自动填充。

5-1-2.感觉组件的创建,代码有点累赘,优化又无从下手(能跑就行,先完成后面再优化代码)

5-1-2.代码调试:效果图

5-2.新钢网信息注册类的定义(不知道类能不能写下去,先试试,不行再转),涉及到数据库不好调试,迟点再弄,先把框架搭好。

class dataControl():
    1.注册:输入数据并写入钢网明细表 名暂为stone
    2.报废:异常的钢网信息从钢网明细表stone移除,存入钢网报废表中
    def __init__(self):
    def login(self,data):#注册钢网,存入数据表
        for i in data:
            if i=="":
                print("数据缺少,无法录入")
                return
        self.con=sql.connect("stencil.db")
        self.cursor=self.con.cursor("insert into stone values({0})".format(data))