2016-03-19 1 views
1

Я пытаюсь получить полный путь к каталогу, выбранному через tkinter.filedialog.askdirectory, но он возвращает только путь к корневой папке, например, выбор папки/root вернется только в//, это кажется странно, как его вернуть, полный путь в python3.5?Почему tkinter.filedialog.askdirectory не возвращает полный путь (с выбранным именем dirname)?

импорта Tkinter, как тк из Tkinter импорта FileDialog

root = tk.Tk() 
root.withdraw() 
dirname = filedialog.askdirectory(parent=root,initialdir="/",title='Please select a directory') 
if len(dirname) > 0: 
    print("You chose %s" % dirname) 
+0

работает как и ожидалось на моем Mac, какую ОС вы используете? –

+0

Linux gnu 4.2.0-27-generiC# 32-Ubuntu SMP Fri Jan 22 04:49:08 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux – ubugnu

+1

так что он возвращает папку открытой, а не выбранную? если вы дважды щелкните по кнопке '/ root', чтобы перейти к ней, то подтвердите, дает ли она правильный путь? Я помню, как мой друг имел ту же проблему с linux на других программах, кроме python. –

ответ

2

Метод filedialog.askdirectory() возвращает экземпляр filedialog.Directory класса, который нужен PyObject команду:

enter image description here

Сам выбор папки не представляет собой команду, поэтому вы не печатаете нужную папку. Двойным щелчком мыши по интересующей вас папке вы получите удовлетворяющую и согласованную команду PyObject, в результате чего вы ожидаете.

Простыми словами: вам нужно дважды щелкнуть на папке, которую вы хотите открыть, а затем нажмите кнопку ОК и не просто выбрать его и нажмите на Ok на открытом диалоговом окне файла. В противном случае вы напечатаете путь к каталогу, в котором вы сейчас находитесь (initialdir = '/')

Смежные вопросы