Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tkinter条目小部件中CTRL-V出现Python问题_Python_Tkinter_Hex_Tkinter Entry - Fatal编程技术网

Tkinter条目小部件中CTRL-V出现Python问题

Tkinter条目小部件中CTRL-V出现Python问题,python,tkinter,hex,tkinter-entry,Python,Tkinter,Hex,Tkinter Entry,在Entry小部件中,我尝试使用validatecommand和一个函数来验证输入值是否在'abcdef0123456789'中,将值限制为仅十六进制。问题在于,当我使用“CTRL+V”(粘贴)插入值时,“CTRL+V”(粘贴)不起作用。“CTRL+C”和“CTRL+X”(复制和剪切)没有问题 这是一种将输入限制为十六进制值并同时允许使用CTRL-V粘贴/插入值的方法吗 这是一种将输入限制为十六进制值并同时允许使用CTRL-V粘贴/插入值的方法吗 对。可以说,最简单的方法是使用validatec

在Entry小部件中,我尝试使用
validatecommand
和一个函数来验证输入值是否在'abcdef0123456789'中,将值限制为仅十六进制。问题在于,当我使用“CTRL+V”(粘贴)插入值时,“CTRL+V”(粘贴)不起作用。“CTRL+C”和“CTRL+X”(复制和剪切)没有问题

这是一种将输入限制为十六进制值并同时允许使用CTRL-V粘贴/插入值的方法吗

这是一种将输入限制为十六进制值并同时允许使用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()

非常感谢你的回答。