Python文件上传如果语句和用户取消

时间:2013-06-06 23:49:22

标签: python tkinter

我有以下文件上传代码。我想修改这个代码有两件事: 1.如果用户取消askopenfilenames命令,整个程序将停止。 2.如果用户未选择所需数量的文件,则函数fileupload将重新启动,直到选择了正确数量的文件。

import Tkinter
from Tkinter import Tk
tk=Tk()
from tkFileDialog import askopenfilenames
import tkMessageBox
def fileupload():
     tk.withdraw()
     uploadedfiles = askopenfilenames(multiple=True)
     ##if user cancels: (IF STATEMENT TO RESULT IN MESSAGEBOX AND CODE TO STOP)
      ###tk.withdraw()
      ###tkMessageBox.showinfo(message="File Upload has been cancelled program will stop")
       ##Stop code

    if len(uploadedfiles)>2 or len(uploadedfiles)<2:
       tk.withdraw()
       tkMessageBox.showinfo(message="2 files have not been selected!")
       ##rerun function to reselect files
   return uploadedfiles
uploadedfiles=fileupload()
print uploadedfiles

1 个答案:

答案 0 :(得分:1)

首先检查askopenfilenames返回的字符串是否为空,这意味着用户关闭了对话框。然后使用tk.splitlist从字符串创建一个列表(如果它不是空的)并检查其长度:

tk=Tk()
tk.withdraw()

def fileupload():
    while True:
        uploadedfilenames = askopenfilenames(multiple=True)
        if uploadedfilenames == '':
            tkMessageBox.showinfo(message="File Upload has been cancelled program will stop")
            return
        uploadedfiles = tk.splitlist(uploadedfilenames)
        if len(uploadedfiles)!=2:
           tkMessageBox.showinfo(message="2 files have not been selected!")
        else:
            return uploadedfiles

print fileupload()