Напишите программу согласно следующему описанию. Используя значения, введенные в однострочные текстовые поля

  • 35
Напишите программу согласно следующему описанию. Используя значения, введенные в однострочные текстовые поля, определите размеры многострочного текстового поля. Изменение размера должно происходить при нажатии кнопки или клавиши Enter. Установите светлосерый цвет фона для экземпляра Text, когда поле не в фокусе, и белый, когда имеет фокус. Событие получения фокуса должно обозначаться как "фокус", а потери – как "потеря фокуса". Для справки: фокус перемещается по виджетам при нажатии Tab, Ctrl+Tab, Shift+Tab, а также при клике по ним мышью (кнопки не включены). Код на Python 3 должен содержать комментарии.
Strekoza
12
Конечно, вот решение задачи:

python
import tkinter as tk

def change_bg(event):
if event.type == "9":
text_box.config(bg="white")
print("фокус")
elif event.type == "10":
text_box.config(bg="light gray")
print("потеря фокуса")

def change_size():
text_box.config(width=int(width_entry.get()), height=int(height_entry.get()))

root = tk.Tk()
root.title("Программа для изменения размеров многострочного текстового поля")

width_label = tk.Label(root, text="Ширина:")
width_label.pack()
width_entry = tk.Entry(root)
width_entry.pack()

height_label = tk.Label(root, text="Высота:")
height_label.pack()
height_entry = tk.Entry(root)
height_entry.pack()

change_button = tk.Button(root, text="Изменить", command=change_size)
change_button.pack()

text_box = tk.Text(root, bg="light gray")
text_box.pack()
text_box.bind("", change_bg)
text_box.bind("", change_bg)

root.mainloop()


В этой программе мы используем библиотеку tkinter для создания графического интерфейса. При запуске программы появляется окно с двумя полями ввода для ширины и высоты текстового поля, кнопкой "Изменить" и самим многострочным текстовым полем.

Когда пользователь вводит значения ширины и высоты и нажимает кнопку "Изменить", вызывается функция `change_size()`, которая изменяет размер текстового поля с помощью метода `config()`.

Чтобы изменять цвет фона текстового поля в зависимости от его фокуса, мы используем события и . Функция `change_bg()` вызывается при получении и потере фокуса текстовым полем. Внутри этой функции мы проверяем тип события, чтобы определить, является ли это получение фокуса или его потеря. В зависимости от этого мы изменяем цвет фона текстового поля.

Надеюсь, это решение было полезным и понятным для вас! Если у вас возникнут еще вопросы, не стесняйтесь задавать их.