Форум сайта python.su
На платформе WindowsXP + Python 3.2 необходимо программно вызвать диалоговое Windows-окно выбора файла, затем собственно выбрать определенный файл из некоторой папки и передать в программу полное имя этого файла для последующей его обработки. Подскажите, как это сделать?
Офлайн
С помощью tkFileDialog.
Есть там таких два метода:
.askopenfilename()
.askdirectory()
и много полезных других. Нужен пример - дублируем тему в разделе GUI :)
Офлайн
Вы предлагаете использовать компоненты из библиотеки Tkinter? Я же хочу воспользоваться имеющимся в OC Windows системным окном открытия файлов. Возможно, здесь следует использовать какие-то средства из пакета pywin32.
Офлайн
По внешнему виду окно идентично. Скорее всего это оно и есть, только через Tkinter, т.е. Tkinter является просто передатчиком.
Короче - дерзайте :)
Отредактировано 4kpt (Янв. 16, 2013 22:11:34)
Офлайн
B3ersn3V гуглите как использовать win32ui.CreateFileDialog()
4kpt вы как человек который имел дело с tkinter, подскажите, возможно ли сделать такое диалоговое окно без создания/отображения основного окна программы?
Отредактировано JOHN_16 (Янв. 17, 2013 02:38:41)
Офлайн
JOHN_16
Естественно можно…
Но мне ясно показали, что будут решать вопрос другими средствами :)
P.S. Кстати, цена вопроса - три простейших строки кода.
Отредактировано 4kpt (Янв. 17, 2013 09:45:52)
Офлайн
2JOHN_16
Спасибо за наводку. Вот нарыл следующее решение
import win32ui o = win32ui.CreateFileDialog( 1, ".txt", "default.txt", 0, "Text Files (*.txt)|*.txt|All Files (*.*)|*.*|") o.DoModal() print(o.GetPathName())
Офлайн
B3ersn3V
Обалденный пример. Работает только в Винде :)
Отредактировано 4kpt (Янв. 17, 2013 21:57:22)
Офлайн
4kpt
Ну так и в первом топике заявлены именно такие требования) тут не идет речь о знании в целом, скорее решение конкретной задачи.
Офлайн
Чем решение фигово (мое личное мнение):
1. Необходимо качать и ставить отдельный модуль, т.е. win32ui не идет с дистрибутивом, хотя в дистрибутиве есть модуль который благополучно решает эту задачу теми же силами. Даже строки кода практически идентичны.
2. Мало того, что для решения нужно докачивать модуль, так еще и при этом решение получается одноплатформенное.
Можно и гланды рвать через ж..пу :) Тоже лечение конкретной болезни :)
Отредактировано 4kpt (Янв. 18, 2013 01:02:14)
Офлайн