python - 获取文件对话到 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()
解决方案
您可以对 . 的返回值做一些事情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
. 前者打开文件并返回一个句柄,后者只返回文件名。
推荐阅读
- mysql - 由于版本原因,mysql查询不起作用
- wpf - 使用 WPF Prism / Mahapps HamburgerMenu 控件时调用参数化视图模型构造函数
- cmake - 使用 Cmake 进行 Qt5 私有标头检测在 Fedora 上无法正常工作?
- django - 从用户模型中获取电子邮件
- mp3 - “MP3 文件格式无效。零持续时间。Seek 无法正常运行:”使用 HLS 流式传输大型 mp3 文件时出错
- android - 如何获得任何 android 应用程序的原色?
- nunit - NUnit中有顺序或优先级的概念吗?
- websocket - ATMEL SAM4E 的 lws 客户端
- github - 在 Github 自述文件中水平居中 .gif
- java - Lombok-Plugin 在多个 IntelliJ IDEA 设置中不起作用