gpt4 book ai didi

python - 如何检查 python/tk 中条目小部件的内容是 float 、字符串、 bool 值还是整数?

转载 作者:行者123 更新时间:2023-12-01 01:11:29 25 4
gpt4 key购买 nike

我正在尝试检查用户对我创建的 Tk GUI 的输入是否属于我想要的正确数据类型(整数),但我只能检查他们的输入是否是 bool 值,并且我还需要检查他们的输入是字符串还是整数:

from tkinter import*

# creates a GUI
Tester = Tk()

NonEssentialFoodEntry = Entry(Tester, width="30")

NonEssentialFoodEntry.place(x=300,y=540)

def checker():
if NonEssentialFoodEntry.get() == 'TRUE' or 'FALSE':
tkinter.messagebox.showerror("","You have entered a boolean value in the Non-EssentialFood entry field, please enter an integer")


Checker=Button(Tester, height="7",width="30",font=300,command=checker)

Checker.place(x=700, y=580)

最佳答案

那么,您可以在输入上运行正则表达式并检查哪个组不是None:

(?:^(?P<boolean>TRUE|FALSE)$)
|
(?:^(?P<integer>\d+)$)
|
(?:^(?P<float>\d+\.\d+)$)
|
(?:^(?P<string>.+)$)

参见a demo on regex101.com 。首先,每个输入都是一个字符串。

<小时/>在 Python 中:

import re
strings = ["TRUE", "FALSE", "123", "1.234343", "some-string", "some string with numbers and FALSE and 1.23 in it"]

rx = re.compile(r'''
(?:^(?P<boolean>TRUE|FALSE)$)
|
(?:^(?P<integer>-?\d+)$)
|
(?:^(?P<float>-?\d+\.\d+)$)
|
(?:^(?P<string>.+)$)
''', re.VERBOSE)

for string in strings:
m = rx.search(string)
instance = [k for k,v in m.groupdict().items() if v is not None]
print(instance)
if instance:
print("{} is probably a(n) {}".format(string, instance[0]))

正如您原始问题上面的评论中所述,您可能会采用另一种方式 try/except

关于python - 如何检查 python/tk 中条目小部件的内容是 float 、字符串、 bool 值还是整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com