Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » [PyQt4] Открытие файла программой, заданной в системе. [RSS Feed]

#1 Май 22, 2010 18:39:12

darktroll
От:
Зарегистрирован: 2010-03-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Открытие файла программой, заданной в системе.

Здравствуйте.
Я не знаю как правильнее назвать тему, получилось может не совсем говоряще, но суть вопроса в следующем.
Использую QlistView + QfileSystemModel. Нужно реализовать открытие файла, выделенного в QListView соответствующей программой.
Дело в том, что я не совсем представляю как это можно сделать. Хотелось бы, чтобы программа работала на Windows и Linux. У меня есть надежда, что это все можно реализовать базовыми функциями Qt и Python через mime-типы, но я не могу найти нужных функций.
Я не знаю устройства ассоциации приложений определнным типам файлов, но думаю что в каждой системе есть что-то наподобие списка соответсвий. Например: *.avi : MPlayer, *.mp3 : audacious.
В общем, вопрос такой: как проще открыть файл, выделенный в QListView, с помощью системных ассоцивций типов файлов?



Офлайн

#2 Май 22, 2010 21:20:16

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Открытие файла программой, заданной в системе.

Универсального метода не существует (разве что кто-то написал свою обёртку для этого), для винды есть это: http://docs.python.org/library/os.html#os.startfile
Для KDE, Gnome должен быть свой метод.



Офлайн

#3 Май 22, 2010 22:12:21

darktroll
От:
Зарегистрирован: 2010-03-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Открытие файла программой, заданной в системе.

Да, с виндой сработало, спасибо большое. А я для Linux значит придется искать другой способ….. Обидно, что нет универсального…..



Офлайн

#4 Май 22, 2010 23:12:01

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

[PyQt4] Открытие файла программой, заданной в системе.

Запустить gnome-open
Что делать с KDE - не знаю



Офлайн

#5 Май 22, 2010 23:18:43

darktroll
От:
Зарегистрирован: 2010-03-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Открытие файла программой, заданной в системе.

Для гнома нашел решение:
os.system(“gnome-open ” + path)

Но это не универсально. Хотелось бы чего для линукса в общем. Ибо планирую эту прогу потом юзать и на Maemo 4 (Nokia N810), но вот gnome-open там нету…. Хотя бы для Debian-based систем что общее придумать бы….



Офлайн

#6 Май 23, 2010 01:51:56

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

[PyQt4] Открытие файла программой, заданной в системе.

Для линукса такого решения нет и не может быть. :-)
Вообще, было бы неплохо иметь библиотеку, объединяющую несколько вариантов под одним API.



Офлайн

#7 Май 23, 2010 16:47:48

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Открытие файла программой, заданной в системе.

The os module does not provide a cross-platform way to start a file with the associated application. Luckily there is any easy way to do it. An example from phatch/lib/system.py:

def start(path):
if hasattr(os, ‘startfile’): # Windows
os.startfile(path)
else:
if sys.platform.startswith('darwin'): # Mac OS X
command = ‘open’
else: # Linux
command = ‘xdg-open’
subprocess.call()
Вот отсюда http://us.pycon.org/media/2010/talkdata/PyCon2010/038/paper.html
Не проверял, просто наткнулся решил показать



Офлайн

#8 Май 23, 2010 23:42:00

darktroll
От:
Зарегистрирован: 2010-03-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

[PyQt4] Открытие файла программой, заданной в системе.

Такое решение видел, на ББ оно работает, а на Maemo - нет.



Офлайн

  • Начало
  • » GUI
  • » [PyQt4] Открытие файла программой, заданной в системе.[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version