我有这个tkinter GUI,我需要从条目中获取值并进行比较。
self.hystInt.get()
是访问Entry中字符串变量中字符串的方法。 *我必须为每个变量写这个,所以它最终看起来很难看。
if (self.hystInt.get().isdigit() and int(self.hystInt.get()) >= 200 and int(self.hystInt.get()) <= 500):
答案 0 :(得分:10)
def validate(num):
try:
return 200 <= int(num) <= 500
except ValueError:
return False
简单就是好!
答案 1 :(得分:1)
至少你可以使用Python的不寻常的比较语法:
if (self.hystInt.get().isdigit() and (200 <= int(self.hystInt.get()) <= 500)):
答案 2 :(得分:1)
这样做。
try:
hystInt= int(self.hystInt.get())
if 200 <= hystInt <= 500:
Valid.
else:
Out of bounds.
except ValueError, e:
Not even a number.
答案 3 :(得分:1)
临时变量怎么样?我认为真正的问题(可读性和(非常!)性能上的差异)是你正在调用get()
方法三次。
histint = self.hystInt.get()
if (histint.isdigit() and
(200 <= int(histint) <= 500))
答案 4 :(得分:0)
为了减少繁琐的编码,你可以按照这些方式做点什么:
valid_hystInt = lambda self, low, high: (
self.hystInt.get().isdigit() and (low <= int(self.hystInt.get()) <= high)
)
class Class:
hystInt = HystInt() # or whatever
def some_method(self):
if valid_hystInt(self, 200, 500):
pass # use it
或者可能更为一般:
valid_int_field = lambda field, low, high: (
field.get().isdigit() and (low <= int(field.get()) <= high)
)
class Class:
hystInt = HystInt() # or whatever
def some_method(self):
if valid_int_field(self.hystInt, 200, 500):
pass # use it