Это способ ограничить запись шестнадцатеричным значением и в то же время разрешить использование CTRL-V для вставки / вставки значения?
Да.Возможно, самый простой способ - использовать validatecommand
, чтобы проверить, что все символы в виджете являются шестнадцатеричными цифрами.validatecommand
не волнует, как вводятся символы (ввод против вырезать / вставить).
В следующем примере '%P'
говорит tkinter передать новое значение виджета ввода, если редактирование разрешено.Затем мы можем использовать модуль re
, чтобы увидеть, состоит ли новое значение только из нуля или более шестнадцатеричных цифр.
import tkinter as tk
import re
def validate(possible_new_value):
if re.match(r'^[0-9a-fA-F]*$', possible_new_value):
return True
return False
root = tk.Tk()
entry = tk.Entry(root, validate="key",
validatecommand=(root.register(validate), '%P'))
entry.pack(padx=20, pady=20)
root.mainloop()