鱼C论坛

 找回密码
 立即注册
查看: 2438|回复: 3

[已解决]tkinter text控件的获取数据的问题

[复制链接]
发表于 2023-4-10 17:09:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
友友好,
       我们有个文档,需要每周更新下自己部分的内容。我把自己需要更新的内容打包成字典,再插入text控件中。
现在我想在text控件中修改相关内容,
然后再把这些内容进行打包成列表,
请问,如何获取text控件中的内容呢?

以下是把内容插入到text控件中的代码。
title是列表,cases是字典,title是cases的关键字。
# 内容显示格式
    content = '{}'
    for item in cases:
        for i in title:
            text_container.insert(INSERT,
                                     content.format(str(i) + ':' + str(item.get(i)) + '\n\n'))
我修改了text控件中的部分内容,
该如何将text控件中的内容反向变成列表或字典呢?
万分感谢!!!
最佳答案
2023-4-10 18:48:01
要获取text控件中的内容,可以使用Tkinter中的get()方法。该方法可以获取text控件中指定范围的文本内容。

例如,如果要获取整个text控件中的文本,可以使用以下代码:
text_content = text_container.get("1.0", "end")
这将返回从第一行第一个字符到最后一行最后一个字符的所有文本内容。如果要获取特定范围内的文本,可以修改参数。例如,如果要获取第二行第一个字符到第五行最后一个字符的文本,可以使用以下代码:
text_content = text_container.get("2.0", "5.end")
要将文本内容转换回字典或列表,可以根据文本的格式进行解析。例如,如果每个条目都是"key: value"的格式,可以使用以下代码将文本转换为字典:
text_content = text_container.get("1.0", "end")
cases_dict = {}
for line in text_content.split("\n"):
    if ":" in line:
        key, value = line.split(":")
        cases_dict[key.strip()] = value.strip()
这将解析每一行并将其转换为字典中的键值对。如果每个条目的格式不同,需要相应地修改解析代码。
解答来自ChatGPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-10 17:12:24 | 显示全部楼层
您可以使用Tkinter中的Text控件的get()方法来获取文本内容。您可以将获取的文本按照您需要的格式进行处理,以得到您想要的列表或字典。

例如,假设您的text控件名为text_container,您可以使用以下代码获取文本内容:
text_content = text_container.get('1.0', 'end-1c')

其中,'1.0'表示从第1行第0列开始,'end-1c'表示到最后一个字符,不包括换行符。得到文本内容后,您可以按照您的需要将其转换为列表或字典。

如果您的文本内容是按照一定的格式排列的,例如每行表示一个键值对,可以使用split()方法将文本按行分割为一个列表,然后再对每个元素进行进一步的处理,以得到字典或其他数据结构。

下面是一个示例代码,假设您的文本内容是以每行一个键值对的形式排列的,每行的键和值之间用冒号隔开,可以按照如下方式将文本转换为字典:
text_content = text_container.get('1.0', 'end-1c')
text_lines = text_content.split('\n')
cases_dict = {}
for line in text_lines:
    if ':' in line:
        key, value = line.split(':')
        cases_dict[key.strip()] = value.strip()

在上述代码中,我们首先使用split()方法将文本按行分割为一个列表text_lines,然后对每个元素进行进一步的处理,

使用split()方法将每行的键和值分割,并使用strip()方法去除空格和换行符,最终得到一个字典cases_dict。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-10 18:48:01 | 显示全部楼层    本楼为最佳答案   
要获取text控件中的内容,可以使用Tkinter中的get()方法。该方法可以获取text控件中指定范围的文本内容。

例如,如果要获取整个text控件中的文本,可以使用以下代码:
text_content = text_container.get("1.0", "end")
这将返回从第一行第一个字符到最后一行最后一个字符的所有文本内容。如果要获取特定范围内的文本,可以修改参数。例如,如果要获取第二行第一个字符到第五行最后一个字符的文本,可以使用以下代码:
text_content = text_container.get("2.0", "5.end")
要将文本内容转换回字典或列表,可以根据文本的格式进行解析。例如,如果每个条目都是"key: value"的格式,可以使用以下代码将文本转换为字典:
text_content = text_container.get("1.0", "end")
cases_dict = {}
for line in text_content.split("\n"):
    if ":" in line:
        key, value = line.split(":")
        cases_dict[key.strip()] = value.strip()
这将解析每一行并将其转换为字典中的键值对。如果每个条目的格式不同,需要相应地修改解析代码。
解答来自ChatGPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-12 11:40:36 | 显示全部楼层
isdkz 发表于 2023-4-10 17:12
您可以使用Tkinter中的Text控件的get()方法来获取文本内容。您可以将获取的文本按照您需要的格式进行处理, ...

感谢,友友的耐心指导,谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 20:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表