Python:Tkinter中的Button小部件

时间:2015-09-21 11:20:50

标签: python tkinter

我刚刚开始使用Tkinter在Python 2.7中进行GUI编程。

我想要一个按钮浏览,单击该按钮会打开Windows文件资源管理器,并将所选文件的路径返回给变量。我希望稍后再使用这条路径。

我正在关注给定here的代码。它输出一个显示5个按钮的窗口,但按钮不执行任何操作。单击第一个按钮时,它不会打开所选文件。

同样,在单击第二个按钮时,将调用askopenfilename(self)函数,它应返回文件名。就像我提到的,我稍后需要该文件名。

如何将函数返回的值输入某个变量以供将来使用?

1 个答案:

答案 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}}的值。如果希望保存对正在创建的窗口小部件的实际引用,则应将窗口小部件创建与窗口小部件布局分开。即使你不是,将两者分开也是一种很好的做法。