【问题标题】:How to show an error message If user selects the wrong file type?如果用户选择了错误的文件类型,如何显示错误消息?
【发布时间】:2020-07-31 22:16:59
【问题描述】:

我分配了一个项目,其中一部分是让用户选择一些文件或文件夹。我的代码工作正常。如果用户选择了错误的文件类型,我想要做的是引发错误消息。当他/她单击某个按钮时,用户应该访问某种类型的文件,即如果他单击“选择 Java 文件/文件夹”按钮,那么他/她将只选择 Java 文件。请指导。我的代码如下,用于选择文件和文件夹。我还需要补充什么?

def Select_File(self):
    root = Tk()
    root.withdraw()
    self.filename = filedialog.askopenfilenames(initialdir='/', title='Select a File', 
                                               filetype=(('Java','*.java'),('C#','*.cs'),('C++','*.cpp')))
    if self.filename:
        self.scanner = FileScanner()
        self.data = self.scanner.Project_Scanner(self.filename)
        self.Display(self.data)
    else:
        self.msg.setText("No File Selected")
        self.msg.setInformativeText('Please Select a File to Proceed')
        self.msg.setWindowTitle("Error")
        self.msg.exec_()
 

def Select_Project(self):
    root = Tk()
    root.withdraw()
    self.folder_selected = filedialog.askdirectory(initialdir='/', title='Select Folder')
    if self.folder_selected:
        self.files = self.get_Files(self.folder_selected)
        self.scanner = FileScanner()
        self.data = self.scanner.Project_Scanner(self.files)
        self.Display(self.data)
    else:
        self.msg.setText("No Folder Selected")
        self.msg.setInformativeText('Please Select a Folder to Proceed')
        self.msg.setWindowTitle("Error")
        self.msg.exec_()
 

【问题讨论】:

    标签: python python-3.x python-2.7 tkinter


    【解决方案1】:

    尝试删除其他文件类型并检查文件名是否为 java 文件:

    from tkinter.messagebox import showerror
    
    def Select_File(self):
        root = Tk()
        root.withdraw()
        self.filename = filedialog.askopenfilenames(initialdir='/', title='Select a File', 
                                                   filetype=(('Java','*.java'),))
        if self.filename:
            try:
                assert self.filename.split('.')[-1] == 'java'
                self.scanner = FileScanner()
                self.data = self.scanner.Project_Scanner(self.filename)
                self.Display(self.data)
            except Exception as e:
                print(e, type(e))
                showerror("File Open", "had an issue opening file")
        else:
            self.msg.setText("No File Selected")
            self.msg.setInformativeText('Please Select a File to Proceed')
            self.msg.setWindowTitle("Error")
            self.msg.exec_()```
    

    【讨论】:

    • 我有 3 个用于 .java、.cs 和 .cpp 文件的按钮。这是否意味着我需要为每个文件扩展名创建 3 个单独的方法?
    • @RabiSiddique 大概可以传递按下哪个按钮,然后将具有正确文件扩展名类型的元组传递给filetype?
    • 它适用于选择文件。但是,当用户选择一个文件夹时,我该怎么做呢。
    • @RabiSiddique 我认为断言也适用于文件夹,例如 some/folder/java 不起作用并且会引发错误?如果您正在迭代文件夹中的文件,而不是在每个文件上引发错误,只需忽略任何不通过文件的文件以断言结尾。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2022-01-15
    相关资源
    最近更新 更多