Использование python 3
и tkinter
Я пытаюсь создать диалоговое окно файла, которое позволяет пользователю выбирать существующие каталоги (exists=True
).Как подключиться к tkinters FileDialog?
Когда они выбирают choose
Я хотел бы проверить, что каталог также доступен для чтения, и я могу получить блокировку файла. Поскольку остальная часть моей программы будет полагаться на чтение доступа к пути, и его процессы займут много времени.
Whey they select cancel
Я хотел бы закрыть диалоговое окно.
Если каталог не readable
Я хотел бы диалог файла для отображения askretry
сообщения. Нажав Retry
, они вернут их, чтобы выбрать файл. нажатие Cancel
закроет диалог.
В моей первой попытке, новичок в tkinter
, я создал это:
import os
from tkinter import filedialog
from tkinter import messagebox
class OpenDialog(object):
def __init__(self):
self.directory_path = None
self.dialog_title ="Photos Directory Selection"
def ask_for_directory(self):
while not self.directory_path:
self.directory_path = filedialog.askdirectory(mustexist=True, title=self.dialog_title)
if not os.access(os.path.dirname(self.directory_path), os.F_OK):
self.directory_path = None
if not messagebox.askretrycancel(title=self.dialog_title, message="Can't read directory."):
break
Хотя его не совершенен. Это не даст вам cancel
диалог с файлом.
Но увы, я думал, что потенциально может вклиниться в самом файле диалога ...
Я просто не могу понять, как я мог чисто крюк в классе FileDialogue, чтобы чисто отображать askretry
диалог и повторить процесс ,
Если есть что-то я не хватает, пожалуйста, поделитесь :-)
Почему бы не ждать возвращения из диалогового окна, проверьте путь (если пользователь не сделал отменить), затем просто вызовите диалог, если потребуется? – jonrsharpe
Я думаю, что проблема 'filedial.askdirectory' возвращает путь к файлу, а не' bool'. Если бы я мог работать с файлом 'bool' и' file_path' отдельно. – visc
Какие булевы вы ожидаете? – jonrsharpe