我正在尝试检查使用Tkinter和tkFileDialog选择的文件的文件名,但程序总是崩溃,即使我有方法预加载要使用的字符串并注释掉打开的文件对话框。此外,打开文件对话框打开两次,第一次是在我第一次运行程序时,然后在我退出第一个对话框时再次打开,当我尝试关闭那个时,程序崩溃了。我也尝试使用整个目录作为文件名的字符串,但得到了相同的结果。这是我正在使用的相当简单的代码,任何想法导致问题的原因是什么?
from Tkinter import *
import tkFileDialog
def bla():
filename = tkFileDialog.askopenfilename()
if filename:
print filename
return filename
else:
print 'file not opened'
def main():
if bla()=='somepic.bmp':
print 'yes'
else:
print 'no'
main()
errmsg = 'Error!'
Button(text='File Open', command=bla).pack(fill='x')
更新:发生的事情的图片,这是立即出现的,而我只想要一个对话框(小的,打开较大的一个,也缺少按钮)
更新:运行时打开的两个对话框不再有问题,但如果您尝试退出第一个对话框则打开2:
from Tkinter import *
import tkFileDialog
def callback():
filename = tkFileDialog.askopenfilename()
if filename:
print filename
return filename
else:
print 'file not opened'
def main():
mainloop()
if callback().endswith('sen30.bmp'):
print 'yes'
else:
print 'no'
Button(text='File Open', command=callback).pack(fill='x')
errmsg = 'Error!'
main()
我认为它停留在mainloop中并且从未到达if语句。如何从主循环中获取它?