Python tkinter filedialog 递归失败,无法重复让用户选择打开文件

今天在做小程序时遇到了一个问题,假如我想要用户打开一个文件,若他在对话框里点了取消,那么返回的文件路径就是空的,打开文件就会出错,那么这样的话我就要让他一直打开,直到他打开了一个真实的文件才行。我考虑到用递归做,第一次直接打开真实文件的话一切正常,可是当我第一次不打开(取消),第二次打开时,就没有返回的内容了。请大家分析一下问题。

下图为源码

from tkinter import messagebox, filedialog
def open_file():
    file_name = filedialog.askopenfilename(
            title="请选择一个 txt 文本文档",
            filetypes=(("文本文档", "*.txt"),))
    if file_name == "":
        messagebox.showwarning("警告", "未选择任何文件,请再次尝试。")
        open_file()
    return file_name
result = open_file()
print("文件路径:" + result)

img


from tkinter import messagebox, filedialog

def open_file():

    file_name = filedialog.askopenfilename(

            title="请选择一个 txt 文本文档",

            filetypes=(("文本文档", "*.txt"),))

    if file_name == "":

        messagebox.showwarning("警告", "未选择任何文件,请再次尝试。")

        return open_file()
    else:

        return file_name

result = open_file()

print("文件路径:" + result)