【问题标题】:Python Tkinter Text Widget not displaying contents from .txt filePython Tkinter 文本小部件不显示 .txt 文件中的内容
【发布时间】:2020-04-15 21:57:23
【问题描述】:

我目前正在创建一个 Python Tkinter 程序来编辑和创建 .txt 文件。为此,我使用文件对话框方法创建了一个文件打开系统,并将用户选择的路径保存为:文件变量。我已经遍历文件并通过 insert 方法将其添加到文本小部件中。我打开了一个包含 2 行内容的测试 .txt 文件。它只是说:这是一个测试文件。 (新行)用于测试目的

问题是文本小部件显示为空白

我的代码是:

from tkinter import *
from tkinter import FileDialog
master = Tk()

#all other code like filedialog opening code is here

editarea = Text(master,height=10,width=25)
editarea.grid(column=0,row=1)
f = open(file,"r")
for x in f:
    editarea.insert(END,x)

此代码在 Python 3.7 中运行

如何使文本小部件显示 .txt 文件的内容并且仍然可以编辑?

非常感谢 (未来)

我知道上面的代码有点模糊,不会运行,但希望你能明白我的问题的要旨:)

【问题讨论】:

  • 你做了什么来调试这个?你检查过循环内x 的值吗?您发布的代码是正确的,但一次读取整个文件而不是逐行读取会更有效。
  • @BryanOakley 我相信你可以从我的代码中看到,我是 Python 的初学者,虽然我已经做了几年了。正如您在上面建议的那样阅读整个文件,我将使用什么代码来执行此操作?非常感谢!
  • 你会使用editarea.insert("end", f.read())

标签: python tkinter text-widget


【解决方案1】:

这是一个更好的解决方案,一次整个文件

with open(file, "r") as txtr:
    data = txtr.read()
editarea.insert(END, data)

这里是一行一行

with open(file, "r") as txtr:
    data = txtr.readlines()
for x in data:
    editarea.insert(END, x)

如果由于某种奇怪的原因它不起作用,试试这个:

for x in range(len(data)):
    editarea.insert(END, data[x])

【讨论】:

  • 非常感谢您对我的问题的回答-您发布的第二种方法效果很好。
  • 很乐意提供帮助,请随时投票/关闭问题呵呵 :)))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多