Задать вопрос
@max_1O

Как расположить несколько текстов в разных местах в label в tkinter?

Здравствуйте. Практикуюсь на python-е. На данный момент пытаюсь написать калькулятор в tkinter. Подскажите, как после нажатия кнопки операции(+, -, /, *) введенное раннее число хранилось в переменной и этот число продвинулся выше и изменил свет с черного на серый а под ней появился знак выбранной операции, наконец, ниже можно было бы набрать число которая должно быть вычтено, сложено и т.д. Заранее благодарю за выделенное время. Весь скрипт ниже

import tkinter as tk


def add_digit_to_lbl(digit):
    text = label["text"]
    label.configure(text=f"{text}"+str(digit))


window = tk.Tk()

entry_frame = tk.Frame()
label = tk.Label(master=entry_frame, width=30, height=5,
                 relief=tk.SUNKEN, borderwidth=5, anchor="se")

entry_frame.pack()
label.pack()

keys_frame = tk.Frame()
keys_frame.columnconfigure([i for i in range(4)], minsize=20)
keys_frame.rowconfigure([i for i in range(5)], minsize=10)
keys_frame.pack()

clear_btn = tk.Button(text="C", master=keys_frame, width=7,
                      command=lambda: label.delete(0, tk.END))
clear_btn.grid(column=0, row=0, ipady=15)

power_btn = tk.Button(text="^", master=keys_frame, width=7)
power_btn.grid(column=1, row=0, ipady=15)

addition_btn = tk.Button(text="+", master=keys_frame, width=7)
addition_btn.grid(column=2, row=0, ipady=15)

deduction_btn = tk.Button(text="-", master=keys_frame, width=7)
deduction_btn.grid(column=3, row=0, ipady=15)

one_btn = tk.Button(text="1", master=keys_frame, width=7,
                    command=lambda: add_digit_to_lbl(1))
one_btn.grid(column=0, row=1, ipady=15)

two_btn = tk.Button(text="2", master=keys_frame, width=7,
                    command=lambda: add_digit_to_lbl(2))
two_btn.grid(column=1, row=1, ipady=15)

three_btn = tk.Button(text="3", master=keys_frame, width=7,
                      command=lambda: add_digit_to_lbl(3))
three_btn.grid(column=2, row=1, ipady=15)

division_btn = tk.Button(text="/", master=keys_frame, width=7)
division_btn.grid(column=3, row=1, ipady=15)

four_btn = tk.Button(text="4", master=keys_frame, width=7,
                     command=lambda: add_digit_to_lbl(4))
four_btn.grid(column=0, row=2, ipady=15)

five_btn = tk.Button(text="5", master=keys_frame, width=7,
                     command=lambda: add_digit_to_lbl(5))
five_btn.grid(column=1, row=2, ipady=15)

six_btn = tk.Button(text="6", master=keys_frame, width=7,
                    command=lambda: add_digit_to_lbl(6))
six_btn.grid(column=2, row=2, ipady=15)

multiplication_btn = tk.Button(text="*", master=keys_frame, width=7)
multiplication_btn.grid(column=3, row=2, ipady=15)

seven_btn = tk.Button(text="7", master=keys_frame, width=7,
                      command=lambda: add_digit_to_lbl(7))
seven_btn.grid(column=0, row=3, ipady=15)

eight_btn = tk.Button(text="8", master=keys_frame, width=7,
                      command=lambda: add_digit_to_lbl(8))
eight_btn.grid(column=1, row=3, ipady=15)

nine_btn = tk.Button(text="9", master=keys_frame, width=7,
                     command=lambda: add_digit_to_lbl(9))
nine_btn.grid(column=2, row=3, ipady=15)

equality_btn = tk.Button(text="=", master=keys_frame, width=7)
equality_btn.grid(column=3, row=3, ipady=15)

window.mainloop()


P.S.
Как вы видите, объявление баттонов, их вывод на экран и их команды повторяются и занимают много места, я думаю что их можно упростить циклами, но не знаю как, можете что-то посоветовать и насчет этого?
  • Вопрос задан
  • 279 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Используй несколько label'ов или рисуй текст сам на canvas'е.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽