【发布时间】:2022-01-13 14:00:12
【问题描述】:
我正在尝试将我打开的文件对话框的选定文件名交给一个条目小部件。
我查看的所有示例都只是指单击按钮时执行的函数中的 Entry-widget。但是,当我这样做时,应用程序会在 AttributeError: 'NoneType' object has no attribute 'delete' 上中断。
我只是不明白为什么该对象不被视为条目小部件。
import tkinter as tk
from tkinter import filedialog as fd
from tkinter import ttk
global init_csv
init_csv = ""
def select_csv_file(type_csv):
filename = fd.askopenfilename(
title="Select csv file",
filetypes=[("comma separated files","*.csv")]
)
match type_csv:
case "init_csv":
init_csv = filename
err_csv.delete(0,END)
app_window = tk.Tk()
del_labelfrm = ttk.LabelFrame(app_window,text=" Thin-out errors ")
del_labelfrm.pack(fill="x",padx=4,pady=4)
ttk.Label(del_labelfrm,text="Input CSV file: ").grid(column=0,row=0,padx=5,pady=5)
err_csv = ttk.Entry(del_labelfrm,textvariable=init_csv,width=50).grid(column=1,
row=0,
padx=5,
pady=5)
csv_add = tk.PhotoImage(file="./img/add_csv.png")
err_csv_btn = ttk.Button(del_labelfrm,image=csv_add,command=lambda:
select_csv_file("init_csv")).grid(column=2,row=0,pady=5)
app_window.pack_slaves()
app_window.mainloop()
【问题讨论】:
-
err_csv_btn将是None,因为您从grid那里获得回报,即None。就更新按钮而言:您可以在select_csv_file中执行此操作,因为这就是您单击按钮时所调用的内容。