如何对从 tkinter 文本小部件返回的文本运行函数

问题描述

我的 tkinter gui 正在使用文本小部件,以下代码是我如何.get@H_404_2@ 输入数据。

def all_descriptions():
    data = customer_description.get("1.0",END)
    print(data)
@H_404_2@

如果用户输入:

Item 1
Item 2
Item 3
@H_404_2@

它返回的值完全一样。

Item 1
Item 2
Item 3
@H_404_2@

为了以 LIST 格式返回值,我还将 .get@H_404_2@ 函数更改为以下内容

def all_descriptions():
    data = [customer_description.get("1.0",END)]
    print(data)
@H_404_2@

当我这样做时,它返回这样的条目:

['Item 1\nItem 2\nItem 3\n\n']
@H_404_2@

尽管我已经阅读了无数的 google 和 stackoverflow 线程,但我对这个过程有几个问题。

  1. 输入的数据是否作为字符串值返回?我发现一个帖子提到了这一点,但想验证一下。
  2. 如何访问这些数据来运行我的函数?我已经尝试了几种不同的方法,但我最近的尝试如下。
original_description = (all_descriptions())

# Product for Item One
def item_product(original_description,product_dict):
    for key in product_dict :
        if key in original_description():
            return product_dict[key]
    return ("What product is this?")
print(item_product(original_description,product_dict))
@H_404_2@

以上显然不起作用,因为我想在条目小部件的每一行上运行 def item_product()@H_404_2@。谁能指出我正确的方向?

解决方法

customer_description.get("1.0",END) 返回单个字符串。如果你想要一个行列表而不是一个字符串,用 split

在换行符上分割

此外,您应该使用 "end-1c" 而不是 "end"END。后者将获得 tkinter 自动添加的额外换行符。

return customer_description.get("1.0","end-1c").split("\n")