Есть такой код:
#!/usr/bin/python3 import tkinter as tk res=[0] tk_lst=[['1.0','1.4'],['1.5','1.10'],['1.11','1.15']] # Выделение терминов def select_term(): pos1=tk_lst[res[0]][0] pos2=tk_lst[res[0]][-1] txt.tag_add('terms',pos1,pos2) txt.tag_config('terms',background='cyan') # Перейти на предыдущий термин def move_left(event): txt.tag_remove('terms','1.0','end') if res[0] > 0: res[0]-=1 select_term() # Перейти на следующий термин def move_right(event): txt.tag_remove('terms','1.0','end') if res[0]+1 < len(tk_lst): res[0]+=1 select_term() root=tk.Tk() frame_txt=tk.Frame(root) frame_txt.pack() frame_panel=tk.Frame(root) frame_panel.pack() entry=tk.Entry(frame_panel) entry.pack(side='left') button_flag=tk.Button(frame_panel,text='Флаг') button_flag.pack(side='left') button_quit=tk.Button(frame_panel,text='Выйти') button_quit.pack(side='left') txt=tk.Text(frame_txt) txt.pack(expand=1,fill='both') txt.insert('1.0','Папа любит маму.') txt.config(state='disabled') txt.bind('<Left>',move_left) txt.bind('<Right>',move_right) txt.focus_force() root.mainloop()
Проблема заключается в том, что после того, как я переключаюсь на entry для ввода текста, я уже не могу работать с txt: Tab, Shift+Tab или ЛКМ не позволяют взять txt в фокус (при этом после кнопок это можно сделать). Если отключить state='disabled', то все начинает работать, однако, тут много работы надо будет сделать вручную: убрать курсор (если это вообще возможно), не давать менять текст при нажатии клавиш. Соответственно, у меня 2 вопроса:
1. Как изменить код так, чтобы можно было переключаться на txt с помощью клавиатуры и мыши?
2. Можно ли с помощью pack (grid не знаю) сделать так, чтобы кнопка button_flag была слева, элемент entry - по центру, кнопка button_quit - справа?