首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python tkinter从按钮中的函数调用返回值

Python tkinter从按钮中的函数调用返回值
EN

Stack Overflow用户
提问于 2022-04-28 15:40:30
回答 2查看 434关注 0票数 0

你好,我是蟒蛇的新手,我被困住了,我需要帮助。

我的问题是:我有一个函数返回一个字符串,我在一个按钮中调用这个函数,如何得到这个值?

我的代码:

代码语言:javascript
运行
复制
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,我就能做到,它是完美的,

但我不能让它离开这个功能

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-28 15:42:44

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

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2022-04-28 15:51:41

理论上,您将无法做到这一点,将文件路径返回到按钮。

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

此外,函数调用之前不需要lambda,只需调用不带大括号的函数(即命令= select_file)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72046606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档