tkinter导入文件

自学tkinter,针对“文件导入”所走过的坑:
通过在网上查找,很容易找到filedialog为tkinter的文件导入模块,即from tkinter import filedialog,filedialog内置功能源文件写的很简洁就不多说了,这里要提的就是askdirectory,它只能记录到文件所在的文件夹。在此主要介绍askopenfilenames。

import tkinter as tk
from tkinter import filedialog
from main_program import Road_images
window = tk.Tk()

刚开始的写法

def open_file():
    filename = filedialog.askopenfilename(title='打开txt文件', filetypes=[('txt', '*.txt')])
    return filename
button_import = tk.Button(window, text="导入文件",command=open_file)
button_impprt.pack()

这样可以直接打开文件,非常方便,但我需要获取文件路径,于是加了一句

filename = open_file()

这样写就会引发一个很蛋疼的问题,就是刚运行程序时就会自动打开选择文件对话框,网上查半天依然找不到解决的办法,后面才想到借用Entry功能,完整代码如下:

import tkinter as tk
from tkinter import filedialog
window = tk.Tk()
window.geometry("500x300")
def open_file():
    filename = filedialog.askopenfilename(title='打开txt文件', filetypes=[('txt', '*.txt')])
    entry_filename.insert('insert', filename)
# 设置button按钮接受功能
button_import = tk.Button(window, text="导入文件", command=open_file).pack()
# 设置entry
entry_filename = tk.Entry(window, width=30, font=("宋体", 10, 'bold'))
entry_filename.pack()
# 尝试输出
def print_file():
    a = entry_filename.get()  #用get提取entry中的内容
    print(a)
tk.Button(window, text="输出", command=print_file).pack()
window.mainloop()

问题解决
注意1、由于在函数中调用了entry_filename.insert,因此entry_filename不能像button那样直接在后面接
pack()启用。
2、将文件名赋值出去时,尽量在函数内部进行,若文件名用的地方不多,建议全程直接采用函数,不必赋值出去,即:

# 尝试输出
def print_file():
    print(entry_filename.get())
tk.Button(window, text="输出", command=print_file).pack()
window.mainloop()

因为将文件名赋值出去后,容易出现值为空的情况,具体原因我也不清楚。

你可能感兴趣的:(进击的小白)