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