Я вложил 100 строк в 2 столбца.Каждая строка находится внутри одного фрейма, и все упаковано внутри текстового виджета.Я пытаюсь добавить полосу прокрутки, но она прокручивает только текст, а столбцы не двигаются.
frame_fields = tk.Text(self.window)
frame_fields.pack_propagate(0)
tf = {}
text_labels = tk.Text(frame_fields)
text_labels.pack(side='left', expand='yes', fill='both')
scrollbar = tk.Scrollbar(frame_fields)
scrollbar.config(command=text_labels.yview)
scrollbar.pack(side='right', fill='y')
text_labels.config(yscrollcommand=scrollbar.set)
for f in range(100):
tf[f] = tk.Frame(text_labels)
e_find = tk.Entry(tf[f])
e_replace = tk.Entry(tf[f])
e_find.pack(side='left')
e_replace.pack(side='left')
tf[f].pack()
frame_fields.pack()
Как мне изменить этот код, поэтому text_labels
прокрутка?
A Решение
http://i56.tinypic.com/2edaaeg.png
Приведенный ниже код создаетпрокручиваемые ячейки:
def create_cells(self):
"""Create cells for exception text"""
# ----------------------------------------------
frame_fieldsscroll = tk.Text(self.main, relief='flat')
text_fields = tk.Text(frame_fieldsscroll, relief='flat')
frame_fieldsscroll.window_create('insert', window=text_fields)
tf = {}
for f in range(31):
e_find = tk.Entry(text_fields, width=16, relief='flat')
e_replace = tk.Entry(text_fields, width=16, relief='flat')
e_find.insert(0, 'find'+str(f))
e_replace.insert(0, 'replace'+str(f))
e_find.grid(row=0, column=0)
e_replace.grid(row=0, column=1)
text_fields.window_create('insert', window=e_find)
text_fields.window_create('insert', window=e_replace)
text_fields.insert('end', '\n')
scrollbar = tk.Scrollbar(frame_fieldsscroll, width=15)
scrollbar.config(command=text_fields.yview)
text_fields.config(yscrollcommand=scrollbar.set)
frame_fieldsscroll.pack()
scrollbar.pack(side='right', fill='y')
text_fields.pack(fill='both')
text_fields.configure(state='disabled')
frame_fieldsscroll.configure(state='disabled')