14

I'm trying to offer the user the possibility to calculate his profit of his projected sales if the margin has a certain value (.23). The user should be able to enter any value as projected sales:

from tkinter import *

root = Tk()

margin = 0.23
projectedSales = #value of entry
profit = margin * int(projectedSales)

#My function that is linked to the event of my button
def profit_calculator(event):
    print(profit)


#the structure of the window
label_pan = Label(root, text="Projected annual sales:")
label_profit = Label(root, text="Projected profit")
label_result = Label(root, text=(profit), fg="red")

entry = Entry(root)

button_calc = Button(root, text= "Calculate", command=profit_calculator)
button_calc.bind("<Button-1>", profit_calculator)

#position of the elements on the window
label_pan.grid(row=0)
entry.grid(row=0, column=1)
button_calc.grid(row=1)              
label_profit.grid(row=2)
label_result.grid(row=2, column=1)

root.mainloop()
Billal Begueradj
  • 20,717
  • 43
  • 112
  • 130
Pak
  • 157
  • 1
  • 1
  • 6

1 Answers1

22

You can get what's inside Entry widget using get method like:

entry = tkinter.Entry(root)
entryString = entry.get()

Here's an example that does around what you want:

import tkinter as tk

root = tk.Tk()

margin = 0.23

entry = tk.Entry(root)

entry.pack()

def profit_calculator():
    profit = margin * int(entry.get())
    print(profit)

button_calc = tk.Button(root, text="Calculate", command=profit_calculator)
button_calc.pack()

root.mainloop()

You may also want to use textvariable option and tkinter.IntVar() class for synchronizing integer texts for multiple widgets like:

import tkinter as tk

root = tk.Tk()

margin = 0.23
projectedSales = tk.IntVar()
profit = tk.IntVar()

entry = tk.Entry(root, textvariable=projectedSales)

entry.pack()

def profit_calculator():
    profit.set(margin * projectedSales.get())

labelProSales = tk.Label(root, textvariable=projectedSales)
labelProSales.pack()

labelProfit = tk.Label(root, textvariable=profit)
labelProfit.pack()

button_calc = tk.Button(root, text="Calculate", command=profit_calculator)
button_calc.pack()

root.mainloop()

Above example shows that labelProSales and entry have their text values equal at all times, as both use the same variable, projectedSales, as their textvariable option.

Nae
  • 14,209
  • 7
  • 52
  • 79
  • 1
    Ok, thank you so much for your answer, I was hopping for this kind of answer. I think I'm starting to understand ! – Pak Nov 20 '17 at 19:25
  • Sorry, but here it says as error: –  Aug 29 '20 at 02:49
  • ```File "interface.py", line 6, in search entryString = inputS.get() AttributeError: 'NoneType' object has no attribute 'get'``` –  Aug 29 '20 at 02:49
  • @TroyD That error is not related to the code piece above as `inputS` variable is _not_ mentioned at all. For further assistance on that error, I'd suggest reading up on https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Nae Aug 31 '20 at 08:31