首页 > 解决方案 > 获取文件对话到 tk.text

问题描述

我试图从加载的文件中获取文本到 ktinker .text 中,这是我到目前为止的代码,一旦你用 filedialouge 打开文件,我不太明白文件的去向

from tkinter import *
from tkinter import ttk
from tkinter import filedialog
import tkinter as tk

interface = tk.Tk()
interface.geometry("500x500")
interface.title("Text display")

def openfile():
    return filedialog.askopenfilename()

button = ttk.Button(interface, text="Open text File", command=openfile)  # <------
button.grid(column=1, row=1)

T = tk.Text(interface, height=2, width=30)

T.insert(tk.END, "text file contents here")
T.grid(column=1, row=2)

interface.mainloop()

标签: pythontkinter

解决方案


您可以对 . 的返回值做一些事情askopenfilename。从按钮回调中返回它是没有意义的,因为什么都不会看到返回的值。

例如,您可以将其保存为程序其他部分使用的全局变量:

def openfile():
    global current_file
    current_file = filedialog.askopenfilename()

您可能会做的另一件事实际上是打开文件并将内容插入到您的文本小部件中:

def openfile():
    global current_file
    current_file = filedialog.askopenfilename()
    if current_file:
        with open(current_file, "r") as f:
            data = f.read()
            T.insert("end", data)

但是,如果您要立即打开文件,您可能需要考虑使用askopenfile而不是askopenfilename. 前者打开文件并返回一个句柄,后者只返回文件名。


推荐阅读