对话框确认后,Tkinter askopendialog运行时错误

时间:2014-09-03 08:11:46

标签: python python-3.x tkinter runtime-error

请考虑以下代码段:

from tkinter import *
import tkinter.filedialog as fd

def mycallback(event):
    fname = fd.askopenfilename()
    print(fname)   

root = Tk()
b1 = Button(root, text='Hello!')
b1.bind('<Button-1>', mycallback)
b1.pack()
root.mainloop()

按下按钮b1后,会出现一个打开的对话框。如果我在选择文件后按OK或CANCEL,程序将以退出代码139崩溃。

这里有什么问题?

我在OS X 10.6.8上使用Python 3.4。

1 个答案:

答案 0 :(得分:0)

单击按钮时调用函数可以使用按钮的callback参数完成。 因此,不应将<Button-1>绑定到按钮,而应使用

b1 = Button(root, text='Hello!', command=mycallback)

然后你也应该从mycallback函数中删除event参数,因为命令不会传递任何参数。

这如何解决你的问题,我真的不知道。但根据你的评论,它确实如此。

有关Button(和任何其他)窗口小部件的更多信息,请参阅effbot.org