Mam prosty skrypt, który analizuje plik i ładuje jego zawartość do bazy danych. Nie potrzebuję interfejsu użytkownika, ale w tej chwili monituję użytkownika o przeanalizowanie pliku, raw_input
który jest najbardziej nieprzyjazny, zwłaszcza, że użytkownik nie może skopiować / wkleić ścieżki. Chciałbym w szybki i łatwy sposób przedstawić użytkownikowi okno dialogowe wyboru pliku, który może wybrać plik, a następnie załadować go do bazy danych. (W moim przypadku, gdyby przypadkowo wybrali niewłaściwy plik, analiza nie powiodłaby się i nie stanowiłoby problemu, nawet gdyby został załadowany do bazy danych).
import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
Ten kod jest bliski temu, czego chcę, ale pozostawia irytującą pustą ramkę otwartą (której nie można zamknąć, prawdopodobnie dlatego, że nie zarejestrowałem modułu obsługi zdarzeń zamknięcia).
Nie muszę używać tkInter, ale ponieważ znajduje się w standardowej bibliotece Pythona, jest dobrym kandydatem na najszybsze i najłatwiejsze rozwiązanie.
Jaki jest szybki i łatwy sposób na wyświetlenie monitu o plik lub nazwę pliku w skrypcie bez żadnego innego interfejsu użytkownika?
źródło
Odpowiedzi:
Tkinter to najłatwiejszy sposób, jeśli nie chcesz mieć żadnych innych zależności. Aby wyświetlić tylko okno dialogowe bez innych elementów GUI, musisz ukryć okno główne za pomocą
withdraw
metody:Wariant Pythona 2:
źródło
tkinter.filedialog.askopenfilename()
import Tkinter as tk
andimport tkFileDialog
andfile_path = tkFileDialog.askopenfilename()
Możesz użyć easygui :
Aby zainstalować
easygui
, możesz użyćpip
:Jest to pojedynczy czysty moduł Pythona (
easygui.py
), który używatkinter
.źródło
Spróbuj z wxPython :
źródło
Jeśli nie potrzebujesz interfejsu użytkownika lub oczekujesz, że program będzie działał w interfejsie CLI, możesz przeanalizować ścieżkę pliku jako argument. Umożliwiłoby to skorzystanie z funkcji autouzupełniania interfejsu wiersza polecenia, aby szybko znaleźć potrzebny plik.
Byłoby to prawdopodobnie przydatne tylko wtedy, gdyby skrypt nie był interaktywny, poza wejściem ścieżki pliku.
źródło
Używając tkinter (python 2) lub Tkinter (python 3) rzeczywiście można wyświetlić okno dialogowe otwierania pliku (zobacz inne odpowiedzi tutaj). Należy jednak zauważyć, że interfejs użytkownika tego okna dialogowego jest przestarzały i nie odpowiada nowszym oknom dialogowym otwierania plików dostępnym w systemie Windows 10.
Co więcej - jeśli szukasz sposobu na osadzenie obsługi Pythona we własnej aplikacji - wkrótce przekonasz się, że biblioteka tkinter nie jest kodem typu open source, a co więcej - jest biblioteką komercyjną.
(Na przykład wyszukiwanie „activetcl pricing” prowadzi do tej strony internetowej: https://reviews.financesonline.com/p/activetcl/ )
Tak więc biblioteka tkinter będzie kosztować każdą aplikację, która chce osadzić Pythona.
Samemu udało mi się znaleźć bibliotekę Pythonnet:
(Licencja MIT)
Za pomocą następującego polecenia można zainstalować pythonnet:
Tutaj możesz znaleźć działający przykład korzystania z okna dialogowego otwierania pliku:
https://stackoverflow.com/a/50446803/2338477
Podam tutaj przykład:
Jeśli brakuje Ci również bardziej złożonego interfejsu użytkownika - zobacz folder Demo w pythonnet git.
Nie jestem pewien co do przenośności na inne systemy operacyjne, nie próbowałem, ale planowane jest przeniesienie .net 5 na wiele systemów operacyjnych (Wyszukaj „.net 5 platform”, https://devblogs.microsoft.com/dotnet/introducing -net-5 / ) - więc ta technologia jest również przyszłościowa.
źródło
pywin32
zapewnia dostęp doGetOpenFileName
funkcji win32. Z przykładuźródło
|win32con.OFN_NOCHANGEDIR
doFlags
, ale uważaj na zastrzeżenie stackoverflow.com/questions/50468051/ ...GetOpenFileNameW
.Sprawdź EasyGUI, bardzo łatwy w użyciu moduł, który powinien wystarczyć - http://easygui.sourceforge.net/
Użyłbyś funkcji fileopenbox opisanej na tej stronie dokumentacji API - https://easygui.readthedocs.io/en/latest/api.html
źródło