Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 16, 2013 15:22:50

B3ersn3V
Зарегистрирован: 2012-04-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

На платформе WindowsXP + Python 3.2 необходимо программно вызвать диалоговое Windows-окно выбора файла, затем собственно выбрать определенный файл из некоторой папки и передать в программу полное имя этого файла для последующей его обработки. Подскажите, как это сделать?

Офлайн

#2 Янв. 16, 2013 17:35:15

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

С помощью tkFileDialog.
Есть там таких два метода:
.askopenfilename()
.askdirectory()
и много полезных других. Нужен пример - дублируем тему в разделе GUI :)



Офлайн

#3 Янв. 16, 2013 18:32:02

B3ersn3V
Зарегистрирован: 2012-04-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

Вы предлагаете использовать компоненты из библиотеки Tkinter? Я же хочу воспользоваться имеющимся в OC Windows системным окном открытия файлов. Возможно, здесь следует использовать какие-то средства из пакета pywin32.

Офлайн

#4 Янв. 16, 2013 22:11:07

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

По внешнему виду окно идентично. Скорее всего это оно и есть, только через Tkinter, т.е. Tkinter является просто передатчиком.

Короче - дерзайте :)



Отредактировано 4kpt (Янв. 16, 2013 22:11:34)

Офлайн

#5 Янв. 17, 2013 02:34:16

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

B3ersn3V гуглите как использовать win32ui.CreateFileDialog()

4kpt вы как человек который имел дело с tkinter, подскажите, возможно ли сделать такое диалоговое окно без создания/отображения основного окна программы?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Янв. 17, 2013 02:38:41)

Офлайн

#6 Янв. 17, 2013 09:44:39

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

JOHN_16
Естественно можно…
Но мне ясно показали, что будут решать вопрос другими средствами :)

P.S. Кстати, цена вопроса - три простейших строки кода.



Отредактировано 4kpt (Янв. 17, 2013 09:45:52)

Офлайн

#7 Янв. 17, 2013 17:14:04

B3ersn3V
Зарегистрирован: 2012-04-29
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

2JOHN_16
Спасибо за наводку. Вот нарыл следующее решение

import win32ui
o = win32ui.CreateFileDialog( 1, ".txt", "default.txt", 0, "Text Files (*.txt)|*.txt|All Files (*.*)|*.*|")
o.DoModal()
print(o.GetPathName())

Офлайн

#8 Янв. 17, 2013 21:57:05

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

B3ersn3V
Обалденный пример. Работает только в Винде :)



Отредактировано 4kpt (Янв. 17, 2013 21:57:22)

Офлайн

#9 Янв. 17, 2013 23:56:01

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

4kpt
Ну так и в первом топике заявлены именно такие требования) тут не идет речь о знании в целом, скорее решение конкретной задачи.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Янв. 18, 2013 00:46:30

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как выполнить GetFile()

Чем решение фигово (мое личное мнение):
1. Необходимо качать и ставить отдельный модуль, т.е. win32ui не идет с дистрибутивом, хотя в дистрибутиве есть модуль который благополучно решает эту задачу теми же силами. Даже строки кода практически идентичны.
2. Мало того, что для решения нужно докачивать модуль, так еще и при этом решение получается одноплатформенное.

Можно и гланды рвать через ж..пу :) Тоже лечение конкретной болезни :)



Отредактировано 4kpt (Янв. 18, 2013 01:02:14)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version