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