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.