данные будут загружаться из словарей в коде, т.к. нового ничего не будет:
# -*- coding: utf-8 -*-
# coding: utf8
# coding=utf8
import collections
from tkinter import Label, Entry, Listbox, Tk, END, Button
import tkinter.ttk
other = collections.OrderedDict(
[
("Гайка", "0.2"),
("Груз (кг)", "1")
])
anchor = collections.OrderedDict(
[
('А1', '1.6'),
('А2', '2.45'),
('А3', '3')
])
plate = collections.OrderedDict(
[
("1001", "0.314"),
("1002", "0.3925"),
("1003", "0.471")
])
category = collections.OrderedDict()
category["Анкера"]=anchor
category["Шайба"]=plate
category["Прочее"]=other
summ = {}
categorySelected = ""
totalW = 0
x=0
item=""
class MainWindow:
def __init__(self,master):
self.master = master
self.master.title("Расчет веса")
self.tree = tkinter.ttk.Treeview(master)
self.tree["columns"]=("c","a","b")
self.tree.column("c", width=100 )
self.tree.column("a", width=100 )
self.tree.column("b", width=100)
self.tree.heading("c", text="Длина")
self.tree.heading("a", text="Количество")
self.tree.heading("b", text="Вес, кг")
self.lbl = Label(master, text = 'Количество:')
self.enterField = Entry(master,width=10)
self.lbl1 = Label(master, text = 'Длина:')
self.enterFieldQ = Entry(master,width=10)
self.lblRes = Label(master, text="Итого:")
self.lblRes1 = Label(master, text="")
self.resetBtn = Button(master, text="Сброс", command=self.resetFunc)
self.categoryList = Listbox(master, width = 15)
self.productList = Listbox(master, width = 30)
self.tree.grid(row=3, columnspan=2)
self.enterField.grid(row=1,column=1)
self.lbl.grid(row=2, column=0)
self.enterFieldQ.grid(row=2,column=1)
self.lbl1.grid(row=1, column=0)
self.lblRes.grid(row=4, column=0)
self.lblRes1.grid(row=4, column=1)
self.resetBtn.grid(row=5,columnspan=2)
self.categoryList.grid(row=0, column=0)
self.productList.grid(row=0, column=1)
self.productList.bind('<<ListboxSelect>>', self.onSelectItem)
self.categoryList.bind('<<ListboxSelect>>', self.onSelectCategory)
self.enterField.bind("<Return>", self.addToTree)
self.enterFieldQ.bind("<Return>", self.addToTree)
self.tree.bind("<Double-1>", self.doubleClick)
for i in category:
self.categoryList.insert(END, i)
def onSelectCategory(self,evt):
print("Category selected")
global categorySelected
itemsCounter = self.productList.size()
if itemsCounter > 0:
self.productList.delete(0, END)
categorySelected = self.categoryList.get(self.categoryList.curselection())
tableFill = {}
if categorySelected == "Анкера":
tableFill = anchor
elif categorySelected == "Шайба":
tableFill = plate
elif categorySelected == "Прочее":
tableFill = other
for i in tableFill:
self.productList.insert(END, i)
def onSelectItem(self,evt):
print ("Item selected")
global item
item = self.productList.get(self.productList.curselection())
def addToTree(self,evt):
global x
global categorySelected
global totalW
global item
print ("Pressed enter")
quantity = self.enterFieldQ.get()
length = self.enterField.get()
if length == "":
length = 1
if quantity != "":
weight = float(category[categorySelected][item])
try:
length = length.replace(',','.')
except:
pass
weight = weight * float(length)
if item == "АК15":
weight = weight + 0.2
if item == "А16В2":
weight = weight + 0.2
if item == "А20В2":
weight = weight + 0.2
if item == "А22В2":
weight = weight + 0.2
if item == "А25В2":
weight = weight + 0.2
weight = int(quantity)*weight
weight = round(weight,2)
if categorySelected != "Анкера":
length = ""
self.tree.insert("" , x, text=item, values=(length,quantity,weight))
self.tree.column("a", anchor="e")
self.tree.column("b", anchor="e")
self.tree.column("c", anchor="e")
totalW = totalW + weight
totalW = round(totalW,2)
self.lblRes1.configure(text=totalW)
self.enterField.delete(0,END)
self.enterFieldQ.delete(0,END)
x=x+1
def doubleClick(self,evt):
global totalW
print("doubleClick")
if totalW > 0:
selected_item = self.tree.selection()[0]
print (selected_item)
curItem = self.tree.focus()
minusWeight = float(self.tree.item(curItem)["values"][2])
totalW = totalW - minusWeight
totalW = round(totalW,2)
self.lblRes1.configure(text=totalW)
self.tree.delete(selected_item)
def resetFunc(self):
#global categorySelected
global totalW
global x
global item
#categorySelected = ""
totalW = 0
x=0
item=""
for i in self.tree.get_children():
self.tree.delete(i)
self.lblRes1.configure(text="")
def main():
root = Tk()
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()