Программа "Решение примеров"

Пользователь вводит в текстовое поле арифметический пример, нажимает Enter, и в метке ниже отображается ответ.

eval_tk.png

В программе используется функция eval() языка программирования Python. Она позволяет выполнять переданную ей строку как код. С другой стороны это создает опасность, так как передать eval() можно совсем не то, что предусматривал программист. Например, если в текстовое поле ввести команду win.quit(), то она будет выполнена, и приложение завершится. Также может быть обработано любое однострочное выражение Python (например, конкатенация строк, списков и др.). То есть, чтобы программа обрабатывала только арифметические выражения, надо написать еще "анализатор" строки.

Метод focus() позволяет установить фокус (сделать активным) текстовое поле сразу при запуске приложения. Без него в это поле требовалось бы щелкнуть, или перейти туда с помощью Tab.

Также здесь можно обратить внимание, как обрабатывается нажатие клавиши Enter.

from tkinter import *
win = Tk()
win.title("Решение примеров")
 
def test(e):
    try:
        lab2["text"] = eval(ent.get())
    except:
        lab2["text"] = "Выражение введено с ошибкой"
 
 
lab = Label(text="Введите математическое выражение из чисел и знаков +, -, *, /, //, %, **")
lab.pack()
ent = Entry(width=50,bg="white",justify=CENTER)
ent.focus()
ent.pack()
ent.bind('<Return>', test)
lab2 = Label()
lab2.pack()
 
win.mainloop()

Создано