K
Kevin McKinley
# I posted a few days ago about a memory leak that I think i'm having with my first Tkinter program.
# I've had trouble pinpointing what is wrong so i thought i would submit the code and see if anyone would
# like to critique it.
# I have one more problem that i can't figure out either. There are a bunch of Entry widgets that require number values.
# My problem is if someone inputs a letter or space the program will have error that makes part of the
# Program nonfunctional.
# Description Of The Program: I made this program to help me with common calculations that i do on a day-to-day
# basis. I'm a outside sales rep and this program figures out Gross profit and price increase. Oh, and where it
# said to enter COG that stands for Cost of Goods. I know it doesn't really matter but figure i would let you guys
# in on the use of the program.
# Thank you,
# Kevin McKinley
from Tkinter import *
class MyApp:
def __tini__(self, parent):
self.myParent = parent
self.myFunctionContainer = Frame(parent)
self.myFunctionContainer.grid(row=0, column=0)
self.COG1 = DoubleVar()
self.COG2 = DoubleVar()
self.COG3 = DoubleVar()
self.COG4 = DoubleVar()
self.GP = DoubleVar()
self.increase = DoubleVar()
self.markup = DoubleVar()
self.gpRange(1)
# This Function is for the Markup Tab for a range of GP%
def gpRange(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.markup1(1)
self.myContainer2 = Frame(self.myFunctionContainer, borderwidth=2, relief=GROOVE)
self.myContainer2.grid(padx=0, pady=2, row=4, column=0, columnspan=4, sticky=W+E)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="Multi-Markup Calculator")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG1)
self.entry1.select_range(0, END)
self.entry1.bind("<Return>", self.markup1)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.title2 = Label(self.myContainer2, text="Gross Profit % ")
self.title2.grid(padx=2, pady=2, row=1, column=1, sticky=W)
self.title3 = Label(self.myContainer2, text=" Markup Price")
self.title3.grid(padx=2, pady=2, row=1, column=2, sticky=E)
self.button1 = Button(self.myFunctionContainer, text="Calculate")
self.button1.bind("<Button-1>", self.markup1)
self.button1.grid(padx=2, pady=2, row=3, column=1, columnspan=2, sticky=W+E)
def gpExact(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.markup2(1)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="Single Markup Calculator")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG2)
self.entry1.select_range(0, END)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entry2 = Entry(self.myFunctionContainer, textvariable=self.GP)
self.entry2.select_range(0, END)
self.entry2.bind("<Return>",self.markup2)
self.entry2.grid(padx=2, pady=2, row=3, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.entryTitle2 = Label(self.myFunctionContainer, text="Enter GP%:")
self.entryTitle2.grid(padx=2, pady=2, row=3, column=1, sticky=E)
self.button = Button(self.myFunctionContainer, text="Calculate")
self.button.bind("<Button-1>", self.markup2)
self.button.grid(padx=2, pady=2, row=4, column=1, columnspan=2, sticky=W+E)
def priceIncrease(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.increase1(1)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="Product Price Increase")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG3)
self.entry1.select_range(0, END)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entry2 = Entry(self.myFunctionContainer, textvariable=self.increase)
self.entry2.select_range(0, END)
self.entry2.bind("<Return>", self.increase1)
self.entry2.grid(padx=2, pady=2, row=3, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.entryTitle2 = Label(self.myFunctionContainer, text="Enter Increase %:")
self.entryTitle2.grid(padx=2, pady=2, row=3, column=1, sticky=E)
self.button = Button(self.myFunctionContainer, text="Calculate")
self.button.bind("<Button-1>", self.increase1)
self.button.grid(padx=2, pady=2, row=4, column=1, columnspan=2, sticky=W+E)
def gpFinder(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, bg="dark grey",relief=SUNKEN, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.gpCalc1(1)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="GP Finder")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG4)
self.entry1.select_range(0, END)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entry2 = Entry(self.myFunctionContainer, textvariable=self.markup)
self.entry2.select_range(0, END)
self.entry2.bind("<Return>", self.gpCalc1)
self.entry2.grid(padx=2, pady=2, row=3, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.entryTitle2 = Label(self.myFunctionContainer, text="Enter Markup $:")
self.entryTitle2.grid(padx=2, pady=2, row=3, column=1, sticky=E)
self.button = Button(self.myFunctionContainer, text="Calculate")
self.button.bind("<Button-1>", self.gpCalc1)
self.button.grid(padx=2, pady=2, row=4, column=1, columnspan=2, sticky=W+E)
def markup1(self, event):
a = [5,10,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,35,40,45,50,55]
colors = ['#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF',
'#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF',
'#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF']
b = 1
row = 4
while b < len(a):
gp = 1-((a[b-1]/100.0))
color = colors[b-1]
row = row + 1
markup = round((self.COG1.get()/gp),2)
self.gp1 = Label(self.myFunctionContainer, bg=color, width=6, relief=RIDGE, text=(((1-gp)*100),"%"))
self.gp1.grid(padx=2, pady=1, row=row ,column=1)
self.price1 = Label(self.myFunctionContainer, bg=color, relief=RIDGE, width=10, text=("$",markup))
self.price1.grid(padx=2, pady=1, row=row ,column=2)
b = b + 1
def markup2(self, event):
GP = 1 - (round((self.GP.get()/100),2))
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text=("$",round((self.COG2.get()/GP),2)))
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
def increase1(self, event):
increase = 1+(self.increase.get()/100)
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text=("$",round((self.COG3.get()*increase),2)))
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
def gpCalc1(self, event):
COG4 = self.COG4.get()
markup = self.markup.get()
if COG4==0.0 or markup==0.0:
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text="")
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
else:
GP = 100*(1-(self.COG4.get()/self.markup.get()))
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text=(round(GP,2),"%"))
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
def clearScreen(self):
self.clear = Label(self.myFunctionContainer)
self.clear.grid(row=1, column=0, rowspan=30, columnspan=6, sticky=N+E+S+W)
return
root = Tk()
myapp = MyApp(root)
root.mainloop()
# I've had trouble pinpointing what is wrong so i thought i would submit the code and see if anyone would
# like to critique it.
# I have one more problem that i can't figure out either. There are a bunch of Entry widgets that require number values.
# My problem is if someone inputs a letter or space the program will have error that makes part of the
# Program nonfunctional.
# Description Of The Program: I made this program to help me with common calculations that i do on a day-to-day
# basis. I'm a outside sales rep and this program figures out Gross profit and price increase. Oh, and where it
# said to enter COG that stands for Cost of Goods. I know it doesn't really matter but figure i would let you guys
# in on the use of the program.
# Thank you,
# Kevin McKinley
from Tkinter import *
class MyApp:
def __tini__(self, parent):
self.myParent = parent
self.myFunctionContainer = Frame(parent)
self.myFunctionContainer.grid(row=0, column=0)
self.COG1 = DoubleVar()
self.COG2 = DoubleVar()
self.COG3 = DoubleVar()
self.COG4 = DoubleVar()
self.GP = DoubleVar()
self.increase = DoubleVar()
self.markup = DoubleVar()
self.gpRange(1)
# This Function is for the Markup Tab for a range of GP%
def gpRange(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.markup1(1)
self.myContainer2 = Frame(self.myFunctionContainer, borderwidth=2, relief=GROOVE)
self.myContainer2.grid(padx=0, pady=2, row=4, column=0, columnspan=4, sticky=W+E)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="Multi-Markup Calculator")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG1)
self.entry1.select_range(0, END)
self.entry1.bind("<Return>", self.markup1)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.title2 = Label(self.myContainer2, text="Gross Profit % ")
self.title2.grid(padx=2, pady=2, row=1, column=1, sticky=W)
self.title3 = Label(self.myContainer2, text=" Markup Price")
self.title3.grid(padx=2, pady=2, row=1, column=2, sticky=E)
self.button1 = Button(self.myFunctionContainer, text="Calculate")
self.button1.bind("<Button-1>", self.markup1)
self.button1.grid(padx=2, pady=2, row=3, column=1, columnspan=2, sticky=W+E)
def gpExact(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.markup2(1)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="Single Markup Calculator")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG2)
self.entry1.select_range(0, END)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entry2 = Entry(self.myFunctionContainer, textvariable=self.GP)
self.entry2.select_range(0, END)
self.entry2.bind("<Return>",self.markup2)
self.entry2.grid(padx=2, pady=2, row=3, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.entryTitle2 = Label(self.myFunctionContainer, text="Enter GP%:")
self.entryTitle2.grid(padx=2, pady=2, row=3, column=1, sticky=E)
self.button = Button(self.myFunctionContainer, text="Calculate")
self.button.bind("<Button-1>", self.markup2)
self.button.grid(padx=2, pady=2, row=4, column=1, columnspan=2, sticky=W+E)
def priceIncrease(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.increase1(1)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="Product Price Increase")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG3)
self.entry1.select_range(0, END)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entry2 = Entry(self.myFunctionContainer, textvariable=self.increase)
self.entry2.select_range(0, END)
self.entry2.bind("<Return>", self.increase1)
self.entry2.grid(padx=2, pady=2, row=3, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.entryTitle2 = Label(self.myFunctionContainer, text="Enter Increase %:")
self.entryTitle2.grid(padx=2, pady=2, row=3, column=1, sticky=E)
self.button = Button(self.myFunctionContainer, text="Calculate")
self.button.bind("<Button-1>", self.increase1)
self.button.grid(padx=2, pady=2, row=4, column=1, columnspan=2, sticky=W+E)
def gpFinder(self, event):
self.clearScreen()
self.gpRangeTab = Button(self.myFunctionContainer, width=14, bg="dark grey",relief=SUNKEN, text="Multi-Markup")
self.gpRangeTab.bind("<Button-1>", self.gpRange)
self.gpRangeTab.grid(row=0, column=0)
self.gpExactTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Single Markup")
self.gpExactTab.bind("<Button-1>", self.gpExact)
self.gpExactTab.grid(row=0, column=1)
self.priceIncreaseTab = Button(self.myFunctionContainer, width=14, bg="dark grey", relief=SUNKEN, text="Product Increase")
self.priceIncreaseTab.bind("<Button-1>", self.priceIncrease)
self.priceIncreaseTab.grid(row=0, column=2)
self.gpFinderTab = Button(self.myFunctionContainer, width=14, relief=FLAT, text="Calculate GP")
self.gpFinderTab.bind("<Button-1>", self.gpFinder)
self.gpFinderTab.grid(row=0, column=3)
self.gpCalc1(1)
self.title1 = Label(self.myFunctionContainer, font="bold", relief=GROOVE, text="GP Finder")
self.title1.grid(padx=0, pady=2, row=1, column=0, columnspan=4, sticky=W+E)
self.entry1 = Entry(self.myFunctionContainer, textvariable=self.COG4)
self.entry1.select_range(0, END)
self.entry1.focus_force()
self.entry1.grid(padx=2, pady=2, row=2, column=2, columnspan=2, sticky=W)
self.entry2 = Entry(self.myFunctionContainer, textvariable=self.markup)
self.entry2.select_range(0, END)
self.entry2.bind("<Return>", self.gpCalc1)
self.entry2.grid(padx=2, pady=2, row=3, column=2, columnspan=2, sticky=W)
self.entryTitle = Label(self.myFunctionContainer, text="Enter COG:")
self.entryTitle.grid(padx=2, pady=2, row=2, column=1, sticky=E)
self.entryTitle2 = Label(self.myFunctionContainer, text="Enter Markup $:")
self.entryTitle2.grid(padx=2, pady=2, row=3, column=1, sticky=E)
self.button = Button(self.myFunctionContainer, text="Calculate")
self.button.bind("<Button-1>", self.gpCalc1)
self.button.grid(padx=2, pady=2, row=4, column=1, columnspan=2, sticky=W+E)
def markup1(self, event):
a = [5,10,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,35,40,45,50,55]
colors = ['#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF',
'#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF',
'#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF','#DCDCDC','#FFFFFF']
b = 1
row = 4
while b < len(a):
gp = 1-((a[b-1]/100.0))
color = colors[b-1]
row = row + 1
markup = round((self.COG1.get()/gp),2)
self.gp1 = Label(self.myFunctionContainer, bg=color, width=6, relief=RIDGE, text=(((1-gp)*100),"%"))
self.gp1.grid(padx=2, pady=1, row=row ,column=1)
self.price1 = Label(self.myFunctionContainer, bg=color, relief=RIDGE, width=10, text=("$",markup))
self.price1.grid(padx=2, pady=1, row=row ,column=2)
b = b + 1
def markup2(self, event):
GP = 1 - (round((self.GP.get()/100),2))
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text=("$",round((self.COG2.get()/GP),2)))
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
def increase1(self, event):
increase = 1+(self.increase.get()/100)
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text=("$",round((self.COG3.get()*increase),2)))
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
def gpCalc1(self, event):
COG4 = self.COG4.get()
markup = self.markup.get()
if COG4==0.0 or markup==0.0:
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text="")
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
else:
GP = 100*(1-(self.COG4.get()/self.markup.get()))
self.price1 = Label(self.myFunctionContainer, relief=GROOVE, bg="white", width=10, font="bold", text=(round(GP,2),"%"))
self.price1.grid(pady=1, row=5 ,column=1, columnspan=2)
def clearScreen(self):
self.clear = Label(self.myFunctionContainer)
self.clear.grid(row=1, column=0, rowspan=30, columnspan=6, sticky=N+E+S+W)
return
root = Tk()
myapp = MyApp(root)
root.mainloop()