BAI*_*BAI 5 python user-interface
我有一个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))
Run Code Online (Sandbox Code Playgroud)
小智 6
我知道这是几年后的事,但我发现了一个相关的怪癖,找不到任何信息。希望这些信息对遇到此答案的任何人都有用。
基本上,如上所述,单击取消将返回一个空字符串...除非您首先实际选择/突出显示一个文件,然后单击取消。这似乎返回了一个空元组!!!
使用python 2.6.6(IDK,问RedHat)
运行以下代码产生后续结果
f_picked = tkFileDialog.askopenfilename()
test = type(f_picked)
print (test)
结果:
<type 'unicode'>#没有选中,取消单击
<type 'tuple'>选择文件#,取消单击
<type 'str'>选择文件#,OK点击
<type 'tuple'>#多个文件选择,OK点击
小智 5
.askopenfilename()在取消时返回空字符串,而不是None.所以你可以比较''或False.为了获得代码示例:
def openFileClicked(self):
self.filename = filedialog.askopenfilename()
if not self.filename:
# config...delete...etc.
# Rest of function
Run Code Online (Sandbox Code Playgroud)
至少我是这样做的,你可能有自己的喜好.