Отображение курсора в виджете «Текст» после выбора опции «Список»Python

Программы на Python
Ответить
Anonymous
 Отображение курсора в виджете «Текст» после выбора опции «Список»

Сообщение Anonymous »

Следующий код Python создает поле списка и текстовый виджет. Когда я выбираю опцию, курсор должен отображаться в текстовом виджете, но это не так. Однако если я нажму Tab, активируется текстовый виджет, и я увижу курсор.
import tkinter as tk

list_cursor_pos = ['2.5', '5.10', '8.15']

def on_listbox_select(event):
i = listbox.curselection()[0]
cursor_pos = list_cursor_pos

text_box.focus_set()
text_box.mark_set("insert", cursor_pos)
text_box.see(cursor_pos)
text_box.event_generate('')

root = tk.Tk()

# Listbox
listbox = tk.Listbox(root)
listbox.pack(side = tk.LEFT, padx=10, pady=10)
for e in list_cursor_pos:
listbox.insert('end', f'Go to {e} in the text')
listbox.bind("", on_listbox_select)

# Text box
text_box = tk.Text(root, height=15, width=50)
text_box.pack(side = tk.RIGHT, padx=10, pady=10)
# Create content for text box
content = ""
for i in range(9):
content += f"{i+1}:234567890123456789\n"
text_box.insert("1.0", content)

root.mainloop()

Когда я делаю то же самое, используя кнопку вместо списка, это работает.
import tkinter as tk

def set_cursor_pos():
cursor_pos = "2.5"
text_box.focus_set()
text_box.mark_set("insert", cursor_pos)

root = tk.Tk()

myButton = tk.Button(root, text = "Set cursor position at 2.5", command=set_cursor_pos)
myButton.pack(side = tk.LEFT, padx=10, pady=10)
myButton.focus_set()

# Text box
text_box = tk.Text(root, height=15, width=50)
text_box.pack(side = tk.RIGHT, padx=10, pady=10)
content = ""
for i in range(9):
content += f"{i+1}:234567890123456789\n"
text_box.insert("1.0", content)

root.mainloop()


Подробнее здесь: https://stackoverflow.com/questions/796 ... box-option
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»