如何在Tkinter的文本小部件中输入文件内容?

时间:2018-08-31 06:10:59

标签: python-3.x tkinter

尽管在我看来,这些问题太基本了,以至于无法找到其他解决方案,但我无法弄清楚问题出在哪里或出了什么问题。

如问题所示,我希望能够打开目录,选择一个文件,然后将该文件的内容输入到要在其中进行编辑的“文本小部件”中。就像任何具有“打开”按钮的应用程序一样。

import tkinter as tk
from tkinter import filedialog

def open():
    filename = filedialog.askopenfilename(initialdir="C:/",
                                      title="Select File",
                                      filetypes=(("Text File", "*.txt"),("All Files","*.*")))

with open(filename, 'r') as f:
    pathlabel.insert("1.0", f.readlines())
    #search_f = f.readlines()
    #for line in search_f:
        #pathlabel.insert("1.0", f.readlines)
        #pathlabel.insert("1.0", "{}",format(line))


#pathlabel.config(text=filename)
#pathlabel.insert("1.0", filename)

root = tk.Tk()

tnb = tk.Menu(root)

root.config(menu=tnb)

    # *******tnb_file*******

tnb_file = tk.Menu(tnb, tearoff=0)
tnb.add_cascade(label="File", menu=tnb_file)
tnb_file.add_command(label="Open ...", command=open)
tnb_file.add_separator()
tnb_file.add_command(label="Exit", command=root.destroy)

pathlabel = tk.Text(root)
pathlabel.pack()

tk.mainloop()

'open()'函数首先创建正常工作的文件对话框。但是,第二部分应该读取文件并将内容输入到我希望能够对其进行编辑的文本小部件(路径标签)中,这是行不通的。

代码中的注释部分是我的不同尝试。

我在哪里错了?

1 个答案:

答案 0 :(得分:0)

根据@jasonharper的有用评论,就可以正式,明确地回答我的问题。

该代码应为:

def file_open():
    filename = filedialog.askopenfilename(initialdir="C:/",
                                  title="Select File",
                                  filetypes=(("Text File", "*.txt"),("All Files","*.*")))

    with open(filename, 'r') as f:
        pathlabel.insert("1.0", f.read())