Trying to create an Entry box that only allows hexadecimal values to be entered.
I’ve tried the below, but as soon as non hex is entered, I get errors.
<code>class HexEntry(Entry):
def __init__(self, master=None, **kwargs):
self.var = StringVar()
Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.old_value = ''
self.var.trace('w', self.check)
def check(self, *args):
current_value = self.var.get()
if (int(current_value,16)):
self.old_value = current_value
elif current_value == "":
self.old_value = current_value
else:
self.var.set(self.old_value)
</code>
<code>class HexEntry(Entry):
def __init__(self, master=None, **kwargs):
self.var = StringVar()
Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.old_value = ''
self.var.trace('w', self.check)
def check(self, *args):
current_value = self.var.get()
if (int(current_value,16)):
self.old_value = current_value
elif current_value == "":
self.old_value = current_value
else:
self.var.set(self.old_value)
</code>
class HexEntry(Entry):
def __init__(self, master=None, **kwargs):
self.var = StringVar()
Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.old_value = ''
self.var.trace('w', self.check)
def check(self, *args):
current_value = self.var.get()
if (int(current_value,16)):
self.old_value = current_value
elif current_value == "":
self.old_value = current_value
else:
self.var.set(self.old_value)
This seems to work OK.
<code>class HexEntry(Entry):
def __init__(self, master=None, **kwargs):
self.var = StringVar()
Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.old_value = ''
self.var.trace('w', self.check)
def check(self, *args):
current_value = self.var.get()
try:
if (int(current_value,16)):
self.old_value = current_value
elif current_value == "":
self.old_value = current_value
except:
self.var.set(self.old_value)
</code>
<code>class HexEntry(Entry):
def __init__(self, master=None, **kwargs):
self.var = StringVar()
Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.old_value = ''
self.var.trace('w', self.check)
def check(self, *args):
current_value = self.var.get()
try:
if (int(current_value,16)):
self.old_value = current_value
elif current_value == "":
self.old_value = current_value
except:
self.var.set(self.old_value)
</code>
class HexEntry(Entry):
def __init__(self, master=None, **kwargs):
self.var = StringVar()
Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.old_value = ''
self.var.trace('w', self.check)
def check(self, *args):
current_value = self.var.get()
try:
if (int(current_value,16)):
self.old_value = current_value
elif current_value == "":
self.old_value = current_value
except:
self.var.set(self.old_value)