Как можно упростить код

Рейтинг: 0Ответов: 1Опубликовано: 03.04.2023

Есть 2 небольших вопроса для знатоков:

1

Есть вот такой вот ужасный код:

create_digit_button("1").grid(row=1, column=0, sticky="wens")
create_digit_button("2").grid(row=1, column=1, sticky="wens")
create_digit_button("3").grid(row=1, column=2, sticky="wens")
create_digit_button("4").grid(row=2, column=0, sticky="wens")
create_digit_button("5").grid(row=2, column=1, sticky="wens")
create_digit_button("6").grid(row=2, column=2, sticky="wens")
create_digit_button("7").grid(row=3, column=0, sticky="wens")
create_digit_button("8").grid(row=3, column=1, sticky="wens")
create_digit_button("9").grid(row=3, column=2, sticky="wens")
create_digit_button("0").grid(row=4, column=0, columnspan=2, sticky="wens")

Можно ли как то элегантно сократить его до разумных пределов? Нужно ли это? Использовать 3 цикла и прочее кажется мне не лучшим решением, но и другого в голову ничего не лезет :( Последняя строка явно выпадает, но как быть с предыдущими.

2

Есть обработчик событий:

def press_key(event: str) -> None:
    if event.char.isdigit():
        add_digit(event.char)
    elif event.char in OPERATIONS:
        add_operation(event.char)
    elif event.char == "`":
        calculate()

В последнем элифе elif event.char == "\r": я пытаюсь обработать нажатие 'return' на маке, однако, почему-то, оно на него не реагирует, как и на другие клавиши типа 'control', 'shift' etc. Собственно, как я могу обработать нажатие клавиши 'return' на макбук?

Ответы

▲ 0Принят
for i in range(1, 5):
    for j in range(3):
        digit = str((i-1)*3 + j+1) if i < 4 else "0"
        create_digit_button(digit).grid(row=i, column=j, columnspan=1 if digit != "0" else 2, sticky="wens")