我刚刚开始使用Tkinter在Python 2.7中进行GUI编程。
我想要一个按钮浏览,单击该按钮会打开Windows文件资源管理器,并将所选文件的路径返回给变量。我希望稍后再使用这条路径。
我正在关注给定here的代码。它输出一个显示5个按钮的窗口,但按钮不执行任何操作。单击第一个按钮时,它不会打开所选文件。
同样,在单击第二个按钮时,将调用askopenfilename(self)
函数,它应返回文件名。就像我提到的,我稍后需要该文件名。
如何将函数返回的值输入某个变量以供将来使用?
答案 0 :(得分:1)
在回调按钮内使用return
毫无意义。它不会回到任何地方。进行回调保存数据的方法是将其存储在全局变量中,如果使用类,则将其存储在实例变量中。
def fetchpath():
global filename
filename = tkFileDialog.askopenfilename(initialdir = 'E:')
FWIW(与问题无关):你犯了一个非常常见的错误。在python中,当您执行foo=bar().baz()
时,foo
会获取baz()
中的值。因此,当你这样做时:
button = Button(...).pack()
button
将获取始终返回pack()
的{{1}}的值。如果希望保存对正在创建的窗口小部件的实际引用,则应将窗口小部件创建与窗口小部件布局分开。即使你不是,将两者分开也是一种很好的做法。