Python tkinter return 来自按钮中函数调用的值

Python tkinter return value from function call in a button

你好,我是 python 的新手,我遇到了困难,我需要帮助。

我的问题是: 我有一个 returns 字符串的函数 我在一个按钮中调用这个函数 如何获取这个值?

我的代码:

from tkinter import* 
from tkinter import filedialog 
file_path = ''
def window(): 
  fen=Tk() fen.geometry('{0}x{1}+{2}+{3}'.format(600, 400, 300, 200)) 
  fen.config(bg = "#87CEEB") 
  return fen 
def select_file(): 
  file_path = filedialog.askopenfilename() 
  return file_path 
def main():  
  fen = window() 
  bouton1 = Button(fen, text = "Select a file", command= select_file()) 
  print(file_path) 
  fen.mainloop() 
main()

如果我在函数中打印 file_path 我可以做到,完美,

但是我无法从函数中取出来

当函数作为事件(按下按钮等)的结果被调用时,您无法获得 return 值。调用函数的代码(在 mainloop 内部)忽略了 return 值。

如果代码的其他部分需要该值,您需要将其存储为对象的属性或全局变量。

修改后的代码中的另一个问题是,您在用户有机会单击按钮之前调用 print 语句,因此即使您使用全局变量,该值也将为空。您必须等到单击按钮并选择文件后才能使用该值。

例如,创建一个打印值的函数,然后将该函数附加到一个按钮。单击按钮选择文件,然后单击按钮显示数据。只要将第一个函数中的值保存到全局变量中,第二个函数中就可以使用。

理论上,将文件路径返回到按钮

,您将无法按原样执行此操作

使用函数设置对象中的变量,或设置全局变量。

此外,您不需要在调用函数之前使用 lambda,只需调用不带大括号的函数(即 command = select_file)