为啥获取entry的值一直是字符串,输入数字也是



```python
import tkinter as tk

def check_value_type(value):
    value_type = type(value)
    if value_type == str:
        return "字符"

    elif value_type == int:
        return "整型"
    elif value_type == float:
        return "浮点型"
    else:
        return "其他类型"

root = tk.Tk()
root.title("判断值类型")

entry = tk.Entry(root)
entry.pack()

```

本来就是,这个需要你自己用int转换

因为输入的数据默认应该就是字符串,所以如果需要判断是否为其他数据类型,还需要进行一些转换操作。

修改如下:

参考链接:


https://www.cnblogs.com/chuanheng/p/python_int.html
Tkinter主窗口焦点|极客笔记 Tkinter主窗口焦点 在本文中,我们将介绍如何在Tkinter中设置和管理主窗口的焦点。焦点是指当前接收用户输入和处理事件的窗口或小部件。当用户与应用程序交互时,焦点的控制非常重要,因为它确定了哪个部件将接收键盘输入和处理鼠标点击事件。 阅读更多:Tkinter 教程 获取主窗口焦点 要获得Tkinter主窗口的焦点,可以使用focus_set()方法。该方法将使主窗口成为焦点窗口,并 https://deepinout.com/tkinter/tkinter-questions/213_tkinter_tkinter_main_window_focus.html

python学习笔记:tkinter之事件(event)、事件处理(event handler)、事件绑定(event binding)、基于事件的动画(animation)_tkinter animation_xiaozhimonica的博客-CSDN博客 事件(event):是指点击、按键等操作,在tkinter中,event是一个类,当某个事件发生时,生成一个event对象,不同类型的事件生成具有不同属性的event对象。事件处理(event handler):是指在捕获到事件后,程序自动执行的操作,是回调函数(recall function)。事件绑定(event binding):是当一个事件发生时程序能够做出响应。tkinter提供..._tkinter animation https://blog.csdn.net/xiaozhimonica/article/details/87873048




import tkinter as tk
 
def check_value_type(value):

    # https://blog.csdn.net/yeziand01/article/details/93597244
  
    try:
        # https://www.cnblogs.com/chuanheng/p/python_int.html
        #  将输入的数据转为int类型,如果不抛异常,则为整形
        result = int(value) 
        return "整型"
    except: # 如果抛异常,再检测是其他哪种类型
        try:
            # 转为float类型,如果不跑异常,则为浮点型
            result = float(value) 
            return "浮点型"
        except:
            # 最后再判断是否为字符串类型
            if isinstance(value,str)==True:
                return "字符"
            else: # 其他类型,如果是通过文本框输入,这里应该运行不到
                return "其他类型"
            
            


# https://deepinout.com/tkinter/tkinter-questions/213_tkinter_tkinter_main_window_focus.html
def focus_out(event,entry): # 失去焦点事件,调用检测数据的类型的函数check_value_type()
    # https://blog.csdn.net/qq_44625592/article/details/109158861
    print("数据类型为:", check_value_type(entry.get()))  

#list=[1,2]
#print("数据类型为:", check_value_type(list))

root = tk.Tk()
root.title("判断值类型")
 
entry = tk.Entry(root)
entry.pack()

# https://deepinout.com/tkinter/tkinter-questions/213_tkinter_tkinter_main_window_focus.html
# https://blog.csdn.net/xiaozhimonica/article/details/87873048
# 这里应该是绑定事件
entry.bind("<FocusOut>",lambda event:focus_out(event,entry))
 
root.mainloop()


img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7504100
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析

    在Python中,Entry小部件是用于接收用户输入的文本字符串的。无论用户输入什么内容,Entry小部件始终将其解释为字符串类型的值。这是因为 Entry小部件的目的是接收字符串输入,而不是解析其他数据类型。

    解决方案

    如果您需要根据用户输入的不同类型来返回相应的类型值,您可以对entry的值进行检查,并根据其内容判断其具体类型。以下是一个可以实现这个功能的函数:

    import tkinter as tk
    
    def get_entry_value(entry):
        value = entry.get()
        try:
            value = int(value)
            return value
        except ValueError:
            try:
                value = float(value)
                return value
            except ValueError:
                return value
    
    def check_value_type(value):
        value_type = type(value)
        if value_type == str:
            return "字符"
        elif value_type == int:
            return "整型"
        elif value_type == float:
            return "浮点型"
        else:
            return "其他类型"
    
    root = tk.Tk()
    root.title("判断值类型")
    
    entry = tk.Entry(root)
    entry.pack()
    
    button = tk.Button(root, text="获取值类型", command=lambda: print(check_value_type(get_entry_value(entry))))
    button.pack()
    
    root.mainloop()
    

    这个程序将在窗口中显示一个Entry小部件和一个按钮,当您点击按钮时,它将根据用户输入的值显示相应的值类型。

    实现说明

    在上述代码中,我们定义了两个函数:

    1. get_entry_value(entry):这个函数用于获取entry小部件的值,并根据其内容返回相应的数值类型值。首先,我们使用entry.get()方法获取输入的字符串。然后,我们尝试将其转换为整数类型,如果成功,则返回整数值;否则,我们尝试将其转换为浮点类型,如果成功,则返回浮点值;否则,我们返回原始的字符串值。
    2. check_value_type(value):这个函数用于判断value的类型并返回相应的字符串类型表示。我们使用type()函数获取value的类型,并根据类型返回相应的字符串值类型。

    在主程序中,我们创建了一个Tk对象和一个Entry小部件,并使用pack()方法将其放置在窗口中。然后,我们创建了一个按钮,并使用command参数将它与一个lambda函数绑定。在这个lambda函数中,我们调用get_entry_value()函数获取entry的值,并将其传递给check_value_type()函数进行类型判断和返回。最后,我们使用mainloop()方法来启动窗口的事件循环。

    您可以根据需要进行修改和扩展这段代码,以满足您的具体需求。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^