askopenfilename在dialogu上处理取消

2024-06-08 22:39:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个gui,它在按下按钮时初始化askopenfilename,但我想能够解释用户在askopenfilename对话框中选择cancel时的情况

这是我的函数来处理点击按钮,但如果语句行似乎不工作!

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))

Tags: 用户selfconfigguifilenamedelete按钮cancel
2条回答

.askopenfilename()取消时返回空字符串,而不是无。因此,您可以与''False进行比较。为了获得代码示例:

def openFileClicked(self):
    self.filename = filedialog.askopenfilename()
    if not self.filename:
        # config...delete...etc.
    # Rest of function

至少我是这么做的,你可能有自己的偏好。

我知道这是几年后,但我发现一个怪癖是相关的,找不到任何信息。希望这些信息对任何遇到这个答案的人都有用。

基本上,如前所述,单击“取消”将返回空字符串。。。 除非您先选择/突出显示文件,然后单击“取消”。 这似乎返回了一个空元组!!!

使用python 2.6.6(IDK,ask RedHat)
运行以下代码将生成后续结果

f_picked = tkFileDialog.askopenfilename() test = type(f_picked) print (test)
结果:
<type 'unicode'>未选择任何内容,取消单击
<type 'tuple'>文件已选定,取消单击
<type 'str'>文件已选定,确定单击
<type 'tuple'>选择了多个文件,确定单击

相关问题 更多 >