Python 执行按钮命令后更新tkinter标签的函数调用是否是意外行为的原因?

Python 执行按钮命令后更新tkinter标签的函数调用是否是意外行为的原因?,python,button,tkinter,label,Python,Button,Tkinter,Label,首先,让我先说我大约6周前在自学中开始编写代码,所以很可能这种方法仍然是一团糟 我有一个在cli中运行的程序(对我来说很好),但我想让它对那些在黑色背景上看到纯白色文本的人有用,他们必须不用鼠标操作 除了在后台运行的主窗口之外,我还希望有一个消息窗口,如果选择了所有必要的文件,该窗口将显示信息。如下所示 files_to_open = {'File_1':'', 'File_2':'', 'File_3':''} def selectfiles_window(): global mes

首先,让我先说我大约6周前在自学中开始编写代码,所以很可能这种方法仍然是一团糟

我有一个在cli中运行的程序(对我来说很好),但我想让它对那些在黑色背景上看到纯白色文本的人有用,他们必须不用鼠标操作

除了在后台运行的主窗口之外,我还希望有一个消息窗口,如果选择了所有必要的文件,该窗口将显示信息。如下所示

files_to_open = {'File_1':'', 'File_2':'', 'File_3':''}

def selectfiles_window():
    global message_window
    message_window = Tk()

    ...

    content = Label(message_window, text=get_open_file_status_txt(), **txt_status_general)
    content.pack(side='top')
    button_select_file1 = Button(message_window,text = 'File 1',font = txt_general['font'],command = lambda:(
select_file_action(name='File 1', filetypename='Excel workbook', extension='*.xlsx'),
content.configure(text=get_open_file_status_txt())))
    button_select_file1(side='bottom')
    message_window.mainloop()

def select_file_action(name, filetypename, extension):
    global files_to_open
    files_to_open[name] = filedialog.askopenfilename(title = f'Select {name}', filetypes=[(filetypename, extension)])


def get_open_file_status_txt():
    global files_to_open
    message =f'''
    [File_1] is {"NOT SET" if (files_to_open["File_1"] == "") else "SET"}'''
    return message
我期望文本在filedialog关闭后更新(部分工作如预期)

现在我不明白的是:如果我单击按钮选择文件_1并第一次取消它,则密钥文件_1的值设置为()。在此之后的任何时候,如果单击按钮选择文件_1并取消它,则密钥文件_1的值将设置为“”。如果我选择了一个文件,路径将正确地保存为值(也是在第一次尝试时)。如果我取消,它将再次设置为“”

有人知道为什么在第一次取消时将值设置为(),但之后按预期运行吗

如果我的方法完全不可行,我还希望有一种不同的解决办法来更新案文

谢谢你,并致以最良好的祝愿,
Thomas

证明,函数调用不是问题所在,而是filedialog.askopenfilename的一种行为(我觉得很奇怪,但可能是故意的),如果在第一次调用时选择了cancel,它将返回一个空元组,但在以后每次取消调用时返回一个空字符串。

这是否回答了您的问题?我知道标签上的更新需要函数调用,这包含在我的代码中。我试图找出的是,我的函数调用是否是意外行为的原因,或者在执行按钮命令后是否有其他方式提交此函数调用。请重新措辞:哪个意外行为。。。?为什么“不同的提交方式…”