Python Tkinter устанавливает неактивную границу для текстового поля? - PullRequest
0 голосов
/ 06 августа 2011

Можно ли получить текстовое поле с рамкой, даже если оно неактивно?

Ответы [ 2 ]

2 голосов
/ 06 августа 2011

Я не уверен, что знаю, что означает "рамка в неактивном состоянии", но вы, безусловно, можете добавить границу для текста в TkInter.Следующий код создает два внешних кадра и два внутренних кадра, затем добавляет текст к каждому внутреннему кадру.Рамки имеют границы 5 пикселей со всех сторон.

from Tkinter import *

root = Tk()

left_outer = Frame(root, bd=1)
left_outer.pack(side=LEFT, fill=Y, pady=5, padx=5)
right_outer = Frame(root, bd=1)
right_outer.pack(side=LEFT, fill=Y, pady=5, padx=5)

left = Frame(left_outer, bd=2, relief=SUNKEN)
right = Frame(right_outer, bd=2, relief=SUNKEN)
left.pack(fill=Y)
right.pack(fill=Y)

t_start = Text(left, width=20, height=200)
t_start.pack(side=LEFT, fill=Y)
s_start = Scrollbar(left)
s_start.pack(side=RIGHT, fill=Y)
s_start.config(command=t_start.yview)
t_start.config(yscrollcommand=s_start.set)

t_end = Text(right, width=20, height=200)
t_end.pack(side=LEFT, fill=Y)
s_end = Scrollbar(right)
s_end.pack(side=RIGHT, fill=Y)
s_end.config(command=t_end.yview)
t_end.config(yscrollcommand=s_end.set)

root.geometry("400x200")
root.mainloop()
1 голос
/ 16 августа 2016

Ответ odie5533 охватывает предоставление границы рамке, которая содержит только текстовый объект. Это отличный способ создать 2D вокруг текстового объекта, но добавляет еще один виджет в микс. Я думаю, что первоначальный вопрос был связан с установкой ширины границы и типа рельефа объекта Text. Этот фрагмент дает рельеф текстовому объекту без использования другого фрейма.

from Tkinter import *

root = Tk()

text_top = Text(root, relief=GROOVE, height=5, width = 40, borderwidth=2)
text_top.pack()

text_bottom = Text(root, relief=RIDGE, height=5, width = 40, borderwidth=2)
text_bottom.pack()

root.geometry("400x200")
root.mainloop()
...