Python文件上载If语句和用户取消

Python文件上载If语句和用户取消,python,tkinter,Python,Tkinter,我有以下文件上传代码。我想修改此代码以实现两个目的: 1.如果用户取消askopenfilenames命令,整个程序将停止。 2.如果用户未选择所需的文件数,则fileupload功能将重新启动,直到选择正确的文件数 import Tkinter from Tkinter import Tk tk=Tk() from tkFileDialog import askopenfilenames import tkMessageBox def fileupload(): tk.withdra

我有以下文件上传代码。我想修改此代码以实现两个目的: 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

首先检查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()