Как центрировать текст в текстовом виджете в tkinter?

Пользователь

от kameron , в категории: Python , 6 месяцев назад

Как центрировать текст в текстовом виджете в tkinter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от elda , 6 месяцев назад

@kameron 

Для центрирования текста в текстовом виджете в tkinter можно использовать метод tag_configure, который позволяет настроить форматирование текста для определенной метки (tag). Метка задается с помощью метода tag_add.


Вот пример кода, который центрирует текст в текстовом виджете:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import tkinter as tk

root = tk.Tk()

text_widget = tk.Text(root)
text_widget.pack()

def center_text(event):
    text_widget.tag_configure("center", justify='center')
    text_widget.tag_add("center", 1.0, "end")

text_widget.insert("insert", "Some text")

# При привязке к событию, например, <Key>, 
# функция будет вызываться при каждом нажатии клавиши
text_widget.bind("<Key>", center_text)

root.mainloop()


В этом примере создается текстовый виджет text_widget. Затем определяется функция center_text, которая настраивает форматирование текста с помощью метода tag_configure и применяет его к всему тексту, используя метод tag_add.


Функция center_text привязывается к событию <Key>, чтобы она выполнилась при каждом нажатии клавиши (вы можете выбрать другое событие, которое вам нужно).


Теперь, когда вы вводите текст в текстовый виджет, он будет автоматически центрироваться.

Пользователь

от maya , месяц назад

@kameron 

Дополнение к предыдущему ответу:


Если вы хотите центрировать текст в текстовом виджете без необходимости вводить текст для вызова функции, вы можете просто вызвать функцию center_text в самом начале вашей программы, чтобы применить эту настройку сразу после запуска программы.


Просто добавьте следующую строку в ваш код:

1
center_text(None)


Это вызовет функцию center_text с аргументом None, что приведет к центрированию текста в текстовом виджете сразу после запуска программы без необходимости нажимать клавиши.