0
votes

I started coding GUI with the module called Tkinter and I still have an error with my code when choosing file with askopenfilename statement button. Here is the error

Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\Admin\AppData\Local\Programs\Python\Python37->32\lib\tkinter__init__.py", line 1705, in call return self.func(args) File "C:\osu2mp4\src\osr2mp4-gui.py", line 6, in SelectOsuFile osu_file = filedialog.askopenfilename(initialdir="C:\User\" + username >+ "\Desktop", filetypes=('.osu'),) File "C:\Users\Admin\AppData\Local\Programs\Python\Python37->32\lib\tkinter\filedialog.py", line 375, in askopenfilename return Open(**options).show() File "C:\Users\Admin\AppData\Local\Programs\Python\Python37->32\lib\tkinter\commondialog.py", line 43, in show s = w.tk.call(self.command, w._options(self.options)) _tkinter.TclError: bad file type "", should be "typeName {extension ?>extensions ...?} ?{macType ?macTypes ...?}?" [Finished in 3.937s]

I tried to debug my code to see what the problem but it's one line

import getpass
import tkinter
from tkinter import filedialog

def SelectOsuFile():
    osu_file = filedialog.askopenfilename(initialdir="C:\\User\\" + username + "\\Desktop", filetypes=('*.osu'))
    return osu_file
def SelectOsrFile():
    osr_file = filedialog.askopenfilename(initialdir="C:\\User\\" + username + "\\Desktop", filetypes=('*.osr'))
    return osr_file
def SelectDirectory():
    directory = filedialog.askdirectory(initialdir="C:\\User\\" + username + "\\Desktop")
def Start():
    start = print('Start')

username = getpass.getuser()
root = tkinter.Tk()
root.geometry('480x360')
buttonOsuExtension = tkinter.Button(root, text='Select .osu file', command=SelectOsuFile)
buttonOsrExtension = tkinter.Button(root, text='Select .osr file', command=SelectOsrFile)
buttonSkinFolder = tkinter.Button(root, text='Select skin folder', command=SelectDirectory)
buttonStart = tkinter.Button(root, text='Start', command=Start)
buttonOsuExtension.pack()
buttonOsrExtension.pack()
buttonSkinFolder.pack()
buttonStart.pack()
root.mainloop()
1

1 Answers

0
votes

As the error said, you should pass list of typeName and extension to filetypes argument like below:

filetypes=(("OSU files", "*.osu"),)