Как я могу поместить виджет ввода, чтобы он не начинал писать прямо на границе виджета? Визуально, имея небольшое пространство от границы виджета ввода.
Мой прогресс:
entry_widget.bind('<FocusIn>', lambda f: entry_widget.insert(0, ' '))
Это добавляет пустое пространство, когда пользователь нажимает на виджет, но есть несколько проблем с этим Решение:
При щелчке и нажатии на него он добавит еще одно место поверх пустого пространства или любого текста, который пользователь заполнил. Я решил очистить виджет ввода на FocusOut, но это будет также очистить весь текст, который пользователь мог бы написать. Пользователь может удалить вставленное пространство при получении содержимого, в начале есть дополнительное пространство. Хотя это небольшая проблема, которая может быть решена путем удаления первого символа содержимого.И может быть больше проблем, которые я не учитывал.
Я думаю, что способ, которым мой код загорается плохо, поэтому я спрашиваю, есть ли у кого-нибудь представление о том, как «правильно» вставить виджет ввода?
Вот простой пример того, как вы можете заставить пространство начать, а затем с помощью связывания сохранить пространство во время ввода пользователем.
import tkinter as tk
root = tk.Tk()
def check_for_space(event):
if entry.get() == "":
entry.insert(0, " ")
elif entry.get()[0] != " ":
entry.insert(0, " ")
else:
pass
entry = tk.Entry(root)
entry.insert(0, " ")
entry.pack()
entry.bind("<Key>", check_for_space)
root.mainloop()