【发布时间】:2013-11-28 22:09:37
【问题描述】:
我正在使用 Python 2 和 Tkinter 创建一个图形程序。该程序允许用户输入一些东西,然后单击一个按钮来检查输入是否是全数字的。我正在尝试使用一个检查输入中每个字符的 ASCII 值的函数来执行此操作。但是,它似乎无法在 Tkinter 中正确处理用户输入,即使输入存储为字符串。输入框上方的标签将发生变化,以反映输入是否被识别为全数字。即使输入完全是数字,标签仍会更改为“输入不仅仅是数字”。
这是我的代码:
#coding: iso-8859-1
from Tkinter import*
root = Tk()
def input_numeric(inpput):
if len(inpput) == 0:
return False
else:
for i in range(0, len(inpput)):
if inpput[i] < 48 or inpput[i] > 57:
return False
return True
def something():
if input_numeric(inpput.get()) == False:
labbel.configure(text = "Input is not numeric only.")
else:
labbel.configure(text = "Input is fully numeric!")
labbel = Label(root, text = "Type something: ")
labbel.pack()
inpput = StringVar()
typing_box = Entry(root, textvariable = inpput)
typing_box.pack(fill = BOTH)
click_button = Button(text = "Click this button", command = something)
click_button.pack()
root.mainloop()
【问题讨论】:
-
Python 1-length 字符串不是 C
chars. -
尝试将
print ord(inpput[i])插入你的 for 循环,看看你得到了什么字符 -
非常感谢!我忘记了在 Python 中你必须使用 ord 函数来获取 ASCII 值。现在它完美地工作了! :)
-
“数字”到底是什么意思?
-12算不算?1.2?像۱۲这样的波斯数字呢?或者像½这样的东西?如果您的意思是“可以被 Python 解释为int”,那么最简单的检查方法是try将其解释为int。如果您的意思是“完全由 Unicode 类型为 Nd 的字符组成”,那就是isdigit。如果您的意思是“完全由 ASCII 数字字符组成,那就是“字符串中的 ch.digits ”。以此类推。 -
我的意思是输入只包含数字。
标签: python encoding tkinter character ascii