Python:Tkinter中的按钮小部件

Python:Tkinter中的按钮小部件,python,tkinter,Python,Tkinter,我刚刚开始使用Tkinter在Python2.7中进行GUI编程 我希望有一个按钮浏览,单击该按钮可打开Windows文件资源管理器并将所选文件的路径返回到变量。我希望稍后使用该路径 我遵循给定的代码。它输出一个窗口,显示5个按钮,但按钮不起任何作用。单击第一个按钮时,它不会打开所选文件 同样,单击第二个按钮时,将调用askopenfilename(self)函数,它应该返回一个文件名。就像我提到的,我以后需要那个文件名 如何将函数返回的值放入某个变量中以备将来使用?在按钮的回调中使用retur

我刚刚开始使用Tkinter在Python2.7中进行GUI编程

我希望有一个按钮浏览,单击该按钮可打开Windows文件资源管理器并将所选文件的路径返回到变量。我希望稍后使用该路径

我遵循给定的代码。它输出一个窗口,显示5个按钮,但按钮不起任何作用。单击第一个按钮时,它不会打开所选文件

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


如何将函数返回的值放入某个变量中以备将来使用?

在按钮的回调中使用
return
没有任何意义。它不会回到任何地方。使回调保存数据的方法是将其存储在全局变量或实例变量(如果使用类)中

def fetchpath():
    global filename
    filename = tkFileDialog.askopenfilename(initialdir = 'E:')
FWIW(与问题无关):你犯了一个非常常见的错误。在python中,当您执行
foo=bar().baz()
时,
foo
接受
baz()
中的值。因此,当您这样做时:

button = Button(...).pack()

按钮
将获取
pack()
的值,该值始终返回
None
。如果希望保存对正在创建的小部件的实际引用,则应将小部件创建与小部件布局分开。即使你不是,将两者分开也是一个很好的做法

我纠正了
pack
错误。我仍然无法使用
全局文件名
名称错误:全局名称“文件名”未定义
@Nancy:您的程序中一定有其他错误。你不应该得到那个错误,但是没有看到代码我甚至猜不到。我的错误。现在就解决了。