Фон текста Python Tkinter - PullRequest
       6

Фон текста Python Tkinter

3 голосов
/ 23 февраля 2012

Я пытаюсь установить цвет фона для текстового виджета Tkinter - я пытаюсь скопировать пример здесь и здесь , оба из которых, по-видимому, указывают на то, что яможет сделать это:

w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white"))

Но когда я пытаюсь это сделать, я получаю сообщение об ошибке от Tkinker:

w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white")
File "C:\python27\lib\lib-tk\Tkinter.py", line 2213, in create_text
return self._create('text', args, kw)
File "C:\python27\lib\lib-tk\Tkinter.py", line 2189, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: unknown option "-bg"

Я попытался с ключом 'background' с тем же результатом.

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

Любой указатель на то, что я делаю не так?Это целый раздел:

master = Tk()
w = Canvas(master, width=1000, height=1000)
w.config(bg='white')
w.pack()
w.create_oval(*coordsSet, width=3)
w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white")
mainloop()

1 Ответ

7 голосов
/ 23 февраля 2012

К сожалению, create_text не поддерживает эту опцию. Вы можете наложить текстовый виджет tkInter, который поддерживает bg и описан во второй ссылке. Кроме того, вы можете использовать функцию bbox, чтобы получить ограничивающую рамку текста, а затем наложить белый прямоугольник под текстом, который будет иметь аналогичный эффект.

Пример второго подхода:

i=w.create_text(*textSet, text=i[3], font=("Helvetica", 16))
r=w.create_rectangle(w.bbox(i),fill="white")
w.tag_lower(r,i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...