import tkinter as tk from tkinter import ttk from tkinter import * #导入tkinter from tkinter import messagebox #引入弹出框 #from typing import Any, Union import pymysql #导入pymysql from pymysql.cursors import Cursor #导入游标 from hashlib import sha1 #导入hashlib,引用函数 from PIL import Image #图像缩放 from tkinter import Scrollbar from tkinter.ttk import Treeview import datetime #采购单直接完成对原材料的采购,根据采购单,产生相应的原材料入库清单(可在页面设置按钮显示),只要输入货物编码,可自动出现其他属性 window=tk.Tk() window.title('原料采购单') window.geometry('1200x600-100-100') window['bg'] = 'Beige' window.resizable(False, False)#不允许改变窗口大小 class YLCG: #原料采购 def __init__(self,window): self.conn = pymysql.Connect( host='localhost', port=3306, user='root', passwd='12345', db='库存与存货系统', charset="utf8" ) #Label YLCG_name_Label=tk.Label(window,text='原料采购单',font=('Arial',25),bg= 'Beige') YLCG_name_Label.place(x=350,y=15) YLCG_id_Label=tk.Label(window,text='采购单号:',font=('Arial',12),bg= 'Beige') YLCG_id_Label.place(x=100,y=80) #YLCG_date_Label=tk.Label(window,text='采购日期:',font=('Arial',12),bg= 'Beige') #YLCG_date_Label.place(x=300,y=80) YLCG_WareHouse_Label=tk.Label(window,text='采购日期:',font=('Arial',12),bg= 'Beige') YLCG_WareHouse_Label.place(x=497,y=80) YLCG_Department_Label=tk.Label(window,text='采购部门:',font=('Arial',12),bg= 'Beige') YLCG_Department_Label.place(x=100,y=120) YLCG_reference_Label=tk.Label(window,text='备注:',font=('Arial',12),bg= 'Beige') YLCG_reference_Label.place(x=332,y=120) YLCG_ZhiDanRen_Label = tk.Label(window, text='制单人:', font=('Arial', 12),bg= 'Beige') YLCG_ZhiDanRen_Label.place(x=100, y=450) #详细 frame = tk.Frame(window) # 锁定框架 frame.place(x=85, y=200, width=620, height=230) scrollBarx = tk.Scrollbar(frame, orient='horizontal') # 定义滑动条 scrollBarx.pack(side=tk.BOTTOM, fill=tk.X) scrollBary = tk.Scrollbar(frame) scrollBary.pack(side=tk.RIGHT, fill=tk.Y) tree = ttk.Treeview(frame, show="headings", xscrollcommand=scrollBarx.set, yscrollcommand=scrollBary.set) scrollBarx['command'] = tree.xview # 根据视图x移动 scrollBary['command'] = tree.yview # 根据视图y移动 tree['columns'] = ('原料编码', '原料名字', '原料类别', '采购数目', '价格', '主计量', '采购时间', '生产批号', '描述', '颜色', '硬度', '供应商ID') tree.column('原料编码', width=120, anchor='center') tree.column('原料名字', width=120, anchor='center') tree.column('原料类别', width=120, anchor='center') tree.column('采购数目', width=120, anchor='center') tree.column('价格', width=120, anchor='center') tree.column('主计量', width=120, anchor='center') tree.column('采购时间', width=120, anchor='center') tree.column('生产批号', width=120, anchor='center') tree.column('描述', width=120, anchor='center') tree.column('颜色', width=120, anchor='center') tree.column('硬度', width=120, anchor='center') tree.column('供应商ID', width=120, anchor='center') tree.heading('原料编码', text='原料编码') tree.heading('原料名字', text='原料名字') tree.heading('原料类别', text='原料类别') tree.heading('采购数目', text='采购数目') tree.heading('价格', text='价格') tree.heading('主计量', text='主计量') tree.heading('采购时间', text='采购时间') tree.heading('生产批号', text='生产批号') tree.heading('描述', text='描述') tree.heading('颜色', text='颜色') tree.heading('硬度', text='硬度') tree.heading('供应商ID', text='供应商ID') tree.insert('', 'end', values=('', '', '', '', '', '', '', '', '', '', '', '')) def buy_product(): #数据转移 window.quit() tk.Button(window, text='采购', width=10, height=1, command=buy_product,bg= 'LemonChiffon').place(x=500, y=440) tree.pack() def treeviewClick(event): iid = tree.identify_row(event.y) xy = tree.identify_element(event.x, event.y) s = tree.selection() print(iid,xy ) print(s)#元祖(x,y) if s: # var 变量 var_MaterialID_Text = tk.StringVar() var_MaterialName_Text = tk.StringVar() var_Category_Text = tk.DoubleVar var_MaterialNum_Text = tk.StringVar() var_MaterialPrice_Text = tk.IntVar() var_MaterialCalculate_Text = tk.IntVar() var_date_Text = tk.IntVar() var_BatchNumber_Text = tk.StringVar() var_M_Specificetions_Text = tk.IntVar() var_Color_Text = tk.IntVar() var_Hard_Text = tk.IntVar() var_SupplierID_Text = tk.StringVar() product = tk.Tk() product.title('原材料货物详细') product.geometry('600x500') product['bg']='Beige' MaterialID_Label = tk.Label(product, text='原料编码:', font=('Arial', 12), bg='Beige') MaterialID_Label.place(x=100, y=20) MaterialName_Label = tk.Label(product, text='原料名字:', font=('Arial', 12), bg='Beige') MaterialName_Label.place(x=100, y=50) M_Category_Label = tk.Label(product, text='原料类别:', font=('Arial', 12), bg='Beige') M_Category_Label.place(x=100, y=80) MaterialNum_Label = tk.Label(product, text='采购数目:', font=('Arial', 12), bg='Beige') MaterialNum_Label.place(x=100, y=110) MaterialPrice_Label = tk.Label(product, text='价格:', font=('Arial', 12), bg='Beige') MaterialPrice_Label.place(x=100, y=140) MaterialCalculate_Label = tk.Label(product, text='主计量:', font=('Arial', 12), bg='Beige') MaterialCalculate_Label.place(x=100, y=170) date_Label = tk.Label(product, text='采购时间:', font=('Arial', 12), bg='Beige') date_Label.place(x=100, y=200) BatchNumber_Label = tk.Label(product, text='生产批号:', font=('Arial', 12), bg='Beige') BatchNumber_Label.place(x=100, y=230) M_Specificetions_Label = tk.Label(product, text='描述:', font=('Arial', 12), bg='Beige') M_Specificetions_Label.place(x=100, y=260) Color_Label = tk.Label(product, text='颜色:', font=('Arial', 12), bg='Beige') Color_Label.place(x=100, y=290) Hard_Label = tk.Label(product, text='硬度:', font=('Arial', 12), bg='Beige') Hard_Label.place(x=100, y=320) SupplierID_Label = tk.Label(product, text='供应商ID:', font=('Arial', 12), bg='Beige') SupplierID_Label.place(x=100, y=350) # Entry MaterialID_Entry = tk.Entry(product, width=15) MaterialID_Entry.place(x=175, y=20) MaterialName_Entry = tk.Entry(product, width=15) MaterialName_Entry.place(x=175, y=50) M_Category_Entry = tk.Entry(product, width=15) M_Category_Entry.place(x=175, y=80) MaterialNum_Entry = tk.Entry(product, width=15) MaterialNum_Entry.place(x=175, y=110) MaterialbigNum_Entry = tk.Entry(product, width=25) #最大采购量 MaterialbigNum_Entry.place(x=300, y=110) MaterialPrice_Entry = tk.Entry(product, width=15) MaterialPrice_Entry.place(x=175, y=140) MaterialCalculate_Entry = tk.Entry(product, width=15) MaterialCalculate_Entry.place(x=175, y=170) date_Entry = tk.Entry(product, width=30) date_Entry.place(x=175, y=200) BatchNumber_Entry = tk.Entry(product, width=15) BatchNumber_Entry.place(x=175, y=230) M_Specificetions_Entry = tk.Entry(product, width=15) M_Specificetions_Entry.place(x=175, y=260) Color_Entry = tk.Entry(product, width=15) Color_Entry.place(x=175, y=290) Hard_Entry = tk.Entry(product, width=15) Hard_Entry.place(x=175, y=320) SupplierID_Entry = tk.Entry(product, width=15) SupplierID_Entry.place(x=175, y=350, width=350) # 变量赋值 def look_point(): # 在列表里继续插入(原材料) # 输入编码,其余自动显示 var_MaterialID_Text = MaterialID_Entry.get() cursor = self.conn.cursor() cursor.execute("select * from material where `MaterialID`='%s'" % var_MaterialID_Text) self.conn.commit() data = cursor.fetchone() print(data[1]) # 获取到数据 var_MaterialName_Text = data[1] var_M_Category_Text = data[2] var_MateriralNum_Text = MaterialNum_Entry.get() num = data[12] - data[3] print(num) var_MaterialbigNum_Text = num var_MaterialPrice_Text = data[4] var_MaterialCalculate_Text = data[5] var_date_Text = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 现在时间 var_BatchNumber_Text = data[7] var_M_Specificetions_Text = data[8] var_Color_Text = data[9] var_Hard_Text = data[10] var_SupplierID_Text = data[11] var_MateriralNum_Text = num MaterialName_Entry.insert('end', data[1]) M_Category_Entry.insert('end', data[2]) MaterialNum_Entry.insert('end', MaterialNum_Entry.get()) MaterialbigNum_Entry.insert('end', '当前最大采购数量为:%d'%num) MaterialPrice_Entry.insert('end', data[4]) MaterialCalculate_Entry.insert('end', data[5]) date_Entry.insert('end', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) BatchNumber_Entry.insert('end', data[7]) M_Specificetions_Entry.insert('end', data[8]) Color_Entry.insert('end', data[9]) Hard_Entry.insert('end', data[10]) SupplierID_Entry.insert('end', data[11]) def insert_point(): #在列表里继续插入(原材料) #输入编码,其余自动显示 var_MaterialID_Text = MaterialID_Entry.get() cursor = self.conn.cursor() cursor.execute("select * from material where `MaterialID`='%s'" % var_MaterialID_Text ) self.conn.commit() data = cursor.fetchone() print(data[1]) # 获取到数据 var_MaterialName_Text = data[1] var_M_Category_Text =data[2] var_MaterialNum_Text = MaterialNum_Entry.get() var_MaterialPrice_Text = data[4] var_MaterialCalculate_Text = data[5] var_date_Text =datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 现在时间 var_BatchNumber_Text =data[7] var_M_Specifications_Text = data[8] var_Color_Text = data[9] var_Hard_Text =data[10] var_SupplierID_Text = data[11] tree.insert('','end',values=(var_MaterialID_Text, var_MaterialName_Text,var_M_Category_Text,var_MaterialNum_Text,var_MaterialPrice_Text,var_MaterialCalculate_Text,var_date_Text, var_BatchNumber_Text, var_M_Specifications_Text,var_Color_Text,var_Hard_Text,var_SupplierID_Text)) #数据插入原料入库表里 cursor = self.conn.cursor() sql = "INSERT INTO material_linshi(MaterialID, MaterialName,M_Category,MaterialNum,MaterialPrice,MaterialCalculate,date, BatchNumber, M_Specifications,Color,Hard,SupplierID) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');" % ( var_MaterialID_Text, var_MaterialName_Text, var_M_Category_Text, var_MaterialNum_Text, var_MaterialPrice_Text, var_MaterialCalculate_Text, var_date_Text, var_BatchNumber_Text, var_M_Specifications_Text, var_Color_Text, var_Hard_Text, var_SupplierID_Text) # 插入数据 cursor.execute(sql) self.conn.commit() tk.Button(product, text='查看', width=10, height=1, command=look_point).place(x=200, y=380) tk.Button(product, text='插入', width=10, height=1, command=insert_point).place(x=300,y=380) product.mainloop() tree.bind('<Double-Button-1>',treeviewClick) def __Entry(self,window): YLCG_MaterialID_Entry=tk.Entry(window,width=15) YLCG_MaterialID_Entry.place(x=175,y=83) YLCG_MaterialNum_Entry=tk.Entry(window,width=15) #采购部门 YLCG_MaterialNum_Entry.place(x=175,y=123) YLCG_MaterialNum_Entry.insert('end', '采购部') YLCG_date_Entry = tk.Entry(window, width=30) YLCG_date_Entry.place(x=175, y=83) YLCG_M_Specificetions_Entry = tk.Entry(window, width=17) YLCG_M_Specificetions_Entry.place(x=572, y=83) nowTime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 现在时间 YLCG_M_Specificetions_Entry.insert('end', nowTime) YLCG_Hard_Entry = tk.Entry(window, width=15) #备注 YLCG_Hard_Entry.place(x=375, y=120, width=320) YLCG_SupplierID_Entry = tk.Entry(window, width=15) #制单人 YLCG_SupplierID_Entry.place(x=170, y=450) def show(self,window): self.__Entry(window) window.mainloop() YLCG=YLCG(window) YLCG.show(window) window.mainloop()
ERP-库存与存货-原料采购单
猜你喜欢
转载自blog.csdn.net/weixin_40838568/article/details/81043315
今日推荐
周排行