【发布时间】:2017-11-02 02:26:34
【问题描述】:
根据文档,如果用户单击“取消”,filedialog.askopenfilename() 应该返回一个空字符串,但它没有这样做,我无法弄清楚它实际返回的是什么。
我做了这个小测试程序,行为和我的实际项目一模一样:
from tkinter import *
from tkinter import filedialog
name = filedialog.askopenfilename()
if name == '':
print("Nothing chosen")
else:
print(name)
当用户点击取消时,最终打印的是一对空括号 ()
将 '' 替换为 '()' 不会改变任何内容。
感谢任何帮助找出正在发生的事情。谢谢。
更新:感谢@PaulRooney 的建议,它可以正常工作,但现在,我第一次运行这部分代码(在我的完整项目中)时,它返回空元组。对于后续的每次运行,它都会返回一个空字符串。
简单地检查两者是否符合我的需要,但这是一种奇怪的行为。
我在 Linux Mint 上使用 Python 3。
【问题讨论】:
-
这符合我的预期。你用的是什么操作系统?
-
你能引用你正在使用的文档吗?是effbot吗?该函数似乎返回一个空元组。也许这是py2和py3之间的变化。与
'()'的比较不起作用,因为那是一个字符串,而不是一个元组。而是尝试if name == ():(不带引号)或更惯用的if not name:。这些都对我有用。 -
@PaulRooney 做到了。谢谢您的帮助。供参考:我在 Linux Mint 上使用 python3。
-
现在我得到了一些更奇怪的行为。更新了问题。
-
如果你只是做
if not name:这不是处理这两个实例吗?它这样做很奇怪。我也能看到。我想这只是 python/tk 接口的怪癖之一。
标签: python python-3.x tkinter