Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does asksaveasfilename not return the file type?

Tkinter is a great package and filedialog has some very helpful features. Both askopenfilename and asksaveasfilename have the 'filetypes' attribute, but it works differently for each one.

With askopenfilename it provides options in the GUI and returns the filetype, BUT

with asksaveasfilename it only provides options in the GUI and does not return the filetype. Example code is shown below:

import tkinter as tk 
from tkinter import filedialog 


old_file_name = filedialog.askopenfilename(title = "Choose file",filetypes=\
                                       (('All files','*.*'),\
                                        ('tagData','*.tagData'),\
                                        ('FDAX files','*.fdax'),\
                                        ('CSV files','*.csv')))

new_file_name = filedialog.asksaveasfilename(initialdir = "/",filetypes=\
                                         (('tagData','*.tagData'),\
                                          ('FDAX files','*.fdax'),\
                                          ('CSV files','*.csv'),\
                                          ('XLS files','*.xls')))

print(old_file_name)
print(new_file_name)

Output:

 C:/Users/christian.abbott/Desktop/FDAX_Error/example.csv
 C:/Users/christian.abbott/Desktop/example

I have looked for good filedialog documentation but have not been able to find it. Why does the package behave this way? Is there a better option to extract the full path of a user-prompted file path?

like image 597
Raving Rabbott Avatar asked Dec 01 '25 13:12

Raving Rabbott


1 Answers

I had this same problem with Python 3 on Windows 10. I managed to solve it by removing the * before the period in the file types tuples. The following change should, hopefully, do what you want:

  new_file_name = filedialog.asksaveasfilename(initialdir = "/",filetypes=\
                                     (('tagData','.tagData'),\
                                      ('FDAX files','.fdax'),\
                                      ('CSV files','.csv'),\
                                      ('XLS files','.xls')))

This worked for me, good luck!

like image 189
DraculZA Avatar answered Dec 04 '25 06:12

DraculZA



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!