@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.
Как вы видите, объявление баттонов, их вывод на экран и их команды повторяются и занимают много места, я думаю что их можно упростить циклами, но не знаю как, можете что-то посоветовать и насчет этого?
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Vindicar
Используй несколько label'ов или рисуй текст сам на canvas'е.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы