有什么方法可以检查条目小部件中的数据类型?

时间:2018-07-17 11:09:18

标签: python tkinter

我正在制作一款游戏,其中我会从玩家那里得到答案,并将他们与正确的答案相匹配。当我使用int数据类型时,我只希望用户输入数据的int类型。我想限制用户输入任何其他数据类型,但是我不能这样做。我也考虑过validate命令,但无法理解。请帮忙。

这是我的代码部分,我想在其中添加一些内容。

def checkans(self,event):
    self.e.focus_set()
    if int(self.e.get())==self.ans:
            self.score+=10

1 个答案:

答案 0 :(得分:0)

尽管this question可能是您真正想要的答案(正如commentsj_4321中指出的那样),但也许值得了解Entry小部件实际上有效。

Entry使用.get()方法返回的数据类型始终将值返回为str

import tkinter as tk

root = tk.Tk()

entry = tk.Entry(root)

entry.pack()

tk.Button(root, text="Check Data Type", command=lambda: print(type(entry.get()))).pack()

root.mainloop()

但是,您可以使用一系列str来检查try except是否代表不同的类型(尽管这很麻烦):

import tkinter as tk

root = tk.Tk()

entry = tk.Entry(root)

entry.pack()

def check(entry):
    try: 
        str(entry.get())
        print(True)
    except ValueError:
        print(False)
    try: 
        int(entry.get())
        print(True)
    except ValueError:
        print(False)
    try: 
        float(entry.get())
        print(True)
    except ValueError:
        print(False)

tk.Button(root, text="Check Data Type", command=lambda: check(entry)).pack()

root.mainloop()