Tkinter entry widget input are written backwards

Viewed 52

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.

3 Answers

I'm new, hope this will help you!! ^^ Also, this is "smallest to change" solution: you just need to replace a few characters.

from tkinter import *

root = Tk()

def add():
    entered.insert(END, '+') # END instead of 0, it adds '+' at the end

def num_1():
    entered.insert(END, 1) # END instead of 0, it adds 1 at the end

def num_2():
    entered.insert(END, 2) # END instead of 0, it adds 2 at the end

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()

Thank you for making a fun to answer question! :D

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...

Ok this is how to delete

from asyncio.windows_events import NULL
from os import remove
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
def delete():
    global i
    i -= 1
    entered.delete(i)



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()
btn_rem = Button(root,text ='del', command=delete).pack()


root.mainloop()
Related