I am making a GFC (Greatest Common Factor) calculator with GUI, but my current code only works with a return statement, and tkinter doesn’t accept return to fill a textbox widget.
Here is a sample of my code
def gproces():
    Gnumber1 = Entry.get(GE1)
    Gnumber2 = Entry.get(GE2)
    Gnumber1 = int(Gnumber1)
    Gnumber2 = int(Gnumber2)
    if Gnumber1 > Gnumber2:
        Gnumber1, Gnumber2 = Gnumber2, Gnumber1
    for x in range (Gnumber1, 0, -1):
        if Gnumber1 % x == 0 and Gnumber2 % x == 0:
            return x
Here is where it’s supposed to be used: (To fill GE3)
GE3=Entry(top, bd =5) GE3.grid(row=3, column=4) GB=Button(top, text ="Submit", command = gproces).grid(row=4,column=4,)
How do I convert a return statement into something that can be used by Tkinter?
Advertisement
Answer
You can just insert the result into the text box inside gprocess():
def gproces():
    # better cater invalid input
    try:
        Gnumber1 = int(GE1.get())
        Gnumber2 = int(GE2.get())
        x = min(Gnumber1, Gnumber2)
        for x in range(x, 0, -1):
            if Gnumber1%x == 0 and Gnumber2%x == 0:
                break
        # insert result into text box
        GE3.delete(0, 'end')
        GE3.insert('end', x)
    except ValueError:
        print('Invalid number input')
Note that there is math.gcd() to find the GCF.