Проблемы с полосой прокрутки python tkinter и текстовым виджетом

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

from Tkinter import *

root = Tk()

s_start = Scrollbar(root)
t_start = Text(root, width=50, height=10)

t_start.focus_set()

s_start.pack(side=RIGHT, fill=Y)
t_start.pack(side=LEFT, fill=Y)

s_start.config(command=t_start.yview)
t_start.config(yscrollcommand=s_start.set)

s_end = Scrollbar(root)
t_end = Text(root, width=50, height=10)

t_end.focus_set()

s_end.pack(side=RIGHT, fill=Y)
t_end.pack(side=LEFT, fill=Y)

s_end.config(command=t_end.yview)
t_end.config(yscrollcommand=s_end.set)

root.mainloop()

Бывает:

введите здесь описание изображения

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


person JShoe    schedule 06.08.2011    source источник


Ответы (1)


Хитрость заключается в том, чтобы использовать фреймы и добавлять полосы прокрутки в фреймы, а не в корень.

from Tkinter import *

root = Tk()

left = Frame(root)
right = Frame(root)

t_start = Text(left, width=20)
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)
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)

left.pack(side=LEFT, fill=Y)
right.pack(side=RIGHT, fill=Y)

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

Два текста TkInter с полосами прокрутки

person odie5533    schedule 06.08.2011
comment
Идеальный. Теперь, как мне задать рамки и высоту? - person JShoe; 06.08.2011
comment
Я исправил положение упаковки. - person odie5533; 06.08.2011
comment
Хорошо, спасибо, тогда можно ли добавить границу к полям, даже если они неактивны? - person JShoe; 06.08.2011