Скрыть текстовый курсор в записи Tkinter - PullRequest
0 голосов
/ 09 июля 2020

Итак, я работал с записями Tkinter и хотел знать, есть ли способ скрыть текстовый курсор в записи. Вот только образец записи, который я создал (и сейчас он выглядит довольно ужасно):

enter image description here

The text cursor in this entry is very clearly visible and it continues to blink even if I click somewhere else on the screen. Is there a way to manually hide the cursor in Tkinter? I wasn't able to find any articles on the subject so is this even possible?

Here is the code for creating an entry in tkinter:

from tkinter import *

top = Tk()

E1 = Entry(top, bd=5)
E1.pack(side=RIGHT)
E1.focus_set()

top.mainloop()

И поэтому возникает тот же вопрос, как сделать Я скрываю текстовый курсор? Этот код также не выводит изображение, которое я дал, потому что оно было создано с помощью goopylib, графической структуры, созданной мной поверх Tkinter. Итак, для всего кода вы можете увидеть https://github.com/BhavyeMathur/goopylib/blob/master/goopylib/objects/Entry.py, и это программа, которую я использовал:

from goopylib.imports import *

window = GraphWin("Test Window", width=110, height=110)
Entry(Point(55, 55), text_width=10).draw(window)

while True:
    update(24)

для запуска этого кода вам понадобится установленный goopylib, который вы можете сделать, используя :

pip install goopylib

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Чтобы скрыть курсор в поле ввода (известном как курсор вставки), мы можем использовать аргумент для поля ввода, например:

Entry(top,insertontime=0,bd=5)

использование E1.focus_set() установит фокус на поле ввода, в то время как приложение запускается в начале, если вы не нажмете кнопку.

1 голос
/ 09 июля 2020

Курсор виден, когда виджет находится в фокусе, что важно, когда пользователь вводит текст в виджет.

Если вам не нужен курсор, задокументированный способ - установить состояние на "только для чтения". Из канонической документации:

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

Проблема также может заключаться просто в том, что когда вы где-то щелкаете, это «где-то еще» не предназначено для захвата фокуса клавиатуры. Если вы отрегулируете свои привязки так, чтобы то, что вы нажимаете, получало фокус, тогда фокус будет удален с виджета ввода, а курсор будет скрыт до тех пор, пока фокус не будет восстановлен.

Например, если вы создаете элементы на холст, вы можете создать привязку для перемещения фокуса на холст, когда вы щелкаете по нему:

the_canvas.bind("<1>", lambda event: event.widget.focus_set())

Когда вы щелкаете по холсту, фокус перемещается на холст и от входа, поэтому запись больше не будет отображать курсор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...