pythonpython-3.xtkintertkinter-entrytkinter-button

Tkinter entry widget input are written backwards


I am trying to make a simple calculator, I am using an entry widget to display the numbers, and buttons to type the numbers.

When I type numbers using the buttons, (btn1, btnadd, btn2), it should be like this in the entry widget 1+2 instead it is like this 2+1

I know mathematically they are the same, but it won't be the case with division or subtraction

My code:

from tkinter import *

root = Tk()

def add():
    entered.insert(0, '+')

def num_1():
    entered.insert(0, 1)

def num_2():
    entered.insert(0, 2)

entered = Entry(root)
entered.pack()
btn1 = Button(root, text='1', command=num_1).pack()
btn2 = Button(root, text='2', command=num_2).pack()
btn_add = Button(root, text='+', command=add).pack()

root.mainloop()

P.S I tried using pyautogui write function but the code was lagging and slow.


Solution

  • So the problem was that entered.insert(0, '+') the 0 is where its going to place the + so every time you were pushing the button you were placing the 1 and the 2 and the + at position 0

    from tkinter import *
    
    root = Tk()
    i= 0
    
    def add():
        global i
        entered.insert(i, '+')
        i += 1
    def num_1():
        global i
        entered.insert(i, 1)
        i += 1
    
    def num_2():
        global i
        entered.insert(i, 2)
        i += 1
    
    entered = Entry(root)
    entered.pack()
    btn1 = Button(root, text='1', command=num_1).pack()
    btn2 = Button(root, text='2', command=num_2).pack()
    btn_add = Button(root, text=' +', command=add).pack()
    
    root.mainloop()
    

    so now you have the global i that will change the position of the placement...