Есть несколько ошибок
resultado
является локальной переменной - вы должны создать ее вне функции
IntVar()
, (StringVar()
, et c.) Не является нормальной переменной, и для работы с ней требуется .get()
, .set()
resultado.set( int(num1) + int(num2) )
print( resultado.get() )
Button
не работает как input()
- не работает дождитесь ответа, чтобы создать текст Label( text=)
, прежде чем вводить текст и нажимать кнопку. Вы можете использовать textvarable=
, чтобы назначить IntVar()
(StringVar()
, и т. Д. c.), И когда вы измените значение в IntVar, он изменит текст на метке.
Button
выполнить функцию позже, но она не может получить результат, поэтому использование return
в operar
бесполезно.
command=
необходимо имя функции без ()
и аргументов (так называемый callback
) и позже (когда вы нажмете кнопку) он добавит ()
к этому имени, чтобы выполнить его. Если вам нужно использовать функцию с аргументами, тогда вы можете использовать lambda
для создания функции без аргументов.
command=lambda:operar(textNumUno.get(), textNumDos.get(), textOperacion.get()))
Entry
дает строки, которые вы должны преобразовать в int()
(или float()
)
#from tkinter import * # PEP8: not preferred
import tkinter as tk
# --- functions ---
def operar(num1, num2, signo):
if signo == "+":
resultado.set( int(num1) + int(num2) )
elif signo == "-":
resultado.set( int(num1) - int(num2) )
elif signo == "/":
resultado.set( int(num1) / int(num2) )
elif signo in "*xX":
resultado.set( int(num1) * int(num2) )
# --- main ---
r = tk.Tk()
r.title("CALCULADORA")
resultado = tk.IntVar()
textNumUno = tk.Entry(r, width=7)
textNumUno.grid(row=0, column=0)
textOperacion = tk.Entry(r, width=3)
textOperacion.grid(row=0, column=1)
textNumDos = tk.Entry(r, width=7)
textNumDos.grid(row=0, column=2)
btn = tk.Button(r, text="=", width=2, command=lambda:operar(textNumUno.get(), textNumDos.get(), textOperacion.get()))
btn.grid(row=0, column=3)
labelResultado = tk.Label(r, textvariable=resultado)
labelResultado.grid(row=0, column=4)
r.mainloop()
КСТАТИ: как для import *
см. PEP 8 - Руководство по стилю для Python Код