我有一个gui,当按下按钮时会初始化askopenfilename但是我希望能够解释用户在askopenfilename对话框上选择取消的时间
这是我处理点击按钮的功能,但if语句行似乎不起作用!
def openFileClicked(self):
self.filename=filedialog.askopenfilename()
if self.filename== None:
self.e.config(state= NORMAL)
self.e.delete(0,END)
self.e.insert(0,"...")
self.e.config(state="readonly")
self.e.config(state= NORMAL)
self.e.delete(0,END)
self.e.insert(0, self.filename)
self.e.config(state="readonly")
print ((self.filename))
答案 0 :(得分:5)
.askopenfilename()
在取消时返回空字符串,而不是None。因此,您可以与''
或False
进行比较。为了获得代码示例:
def openFileClicked(self):
self.filename = filedialog.askopenfilename()
if not self.filename:
# config...delete...etc.
# Rest of function
至少我是这样做的,你可能有自己的喜好。
答案 1 :(得分:2)
我知道这是几年后,但我发现了一个相关的怪癖,找不到任何信息。希望这些信息对遇到这个答案的人有用。
基本上,如上所述,点击取消将返回一个空字符串... 除非您先实际选择/突出显示文件,然后单击取消。 这似乎返回一个空元组!!!
使用python 2.6.6(IDK,问RedHat)
运行以下代码会生成后续结果
f_picked = tkFileDialog.askopenfilename()
test = type(f_picked)
print (test)
结果:
<type 'unicode'>
#未选择任何内容,取消点击了
<type 'tuple'>
#文件已选中,取消点击了
<type 'str'>
#文件已选中,确定点击了
<type 'tuple'>
#选择了多个文件,确定点击了
答案 2 :(得分:0)
您可以考虑用户选择取消,如下所示:
def openFileClicked(self):
self.filename = filedialog.askopenfilename()
# When user select cancel
if (len(self.filename) == 0):
# put your code here in case the user selected cancel
# Otherwise the user selected a file
else:
# put your code here in case the user selected a file