QFileDialog.getexistingdirectory в QGIS\Python

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

QFileDialog.getexistingdirectory в QGIS\Python

Сообщение Максим Дубинин » 03 фев 2009, 23:27

Сражаюсь с реализацией диалога для выбора имени директории в QGIS и Python, нашел вот это, похоже на правду, но не уверен, как реализовать
http://doc.trolltech.com/4.4/qfiledialo ... gDirectory
пристегивайтесь, турбулентность прямо по курсу

Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: QFileDialog.getexistingdirectory в QGIS\Python

Сообщение Lynx » 04 фев 2009, 01:37

Вот пример использования найденной функции в интерпретаторе питона:

Код: Выделить всё

>>> from PyQt4.QtCore import *
>>> from PyQt4.QtGui import *
>>> app = QApplication([])
>>> d = QFileDialog.getExistingDirectory(None, "Open Directory", QDir.currentPath())
>>> d
PyQt4.QtCore.QString(u'/home/lynx/Linux/Programming/plugins repo/qgisOSM/')
>>> str(d)
'/home/lynx/Linux/Programming/plugins repo/qgisOSM/'
Полезные ссылки Python Bindings for Qt v4 Reference Guide и PyQt's Classes

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: QFileDialog.getexistingdirectory в QGIS\Python

Сообщение Максим Дубинин » 04 фев 2009, 03:40

большое спасибо! то что мне нужно, я то, не догадался QApplication сделать, но теперь буду знать.

только одна проблема, при включение этого диалога в расширение, все прекрасно работает, но! после окончания работы программа зависает, может как-то нужно выгружать этот QApplication или что-то? Такое ощущение, что она перехватывает управление QGIS, но не возвращает

вот код, если вдруг найдется минутка взглянуть: http://svn.gis-lab.info/osmpoly_export/
пристегивайтесь, турбулентность прямо по курсу

Lynx
Интересующийся
Сообщения: 29
Зарегистрирован: 04 ноя 2008, 00:40
Репутация: 0

Re: QFileDialog.getexistingdirectory в QGIS\Python

Сообщение Lynx » 04 фев 2009, 12:14

app = QApplication([]) #удалить, я же написал, что это пример для интерпретатора питона
adir = QFileDialog.getExistingDirectory(None, "Open Directory", QDir.currentPath())
j=1 #в плагине используется только один раз, и не ясно зачем
for fid in featids:
features={} #меня глючит или
result={} #списки и
features[fid]=QgsFeature() #вправду
curLayer.featureAtId(fid,features[fid]) #используется
result[fid]=features[fid].geometry() #в качестве
attrmap=features[fid].attributeMap() #переменных?... ;)
attr=attrmap.values()[attrindex]
fileHandle = open (str(adir) + "/" + attr.toString() +'.txt', 'w')
fileHandle.write(attr.toString()+"\n")
fileHandle.write(str(j)+"\n")
i=0
vertex=result[fid].vertexAt(i)
while (vertex!=QgsPoint(0,0)):
fileHandle.write(" "+str(vertex.x())+ " " + str(vertex.y()) +"\n")
i+=1
vertex=result[fid].vertexAt(i)
fileHandle.write("END" +"\n")
fileHandle.write("END" +"\n")
fileHandle.close()

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: QFileDialog.getexistingdirectory в QGIS\Python

Сообщение Максим Дубинин » 05 фев 2009, 00:02

app = QApplication([]) #удалить, я же написал, что это пример для интерпретатора питона
Теперь ты осознаешь глубину моего невежества? :)

Убрал QApplication, помогло, наконец я понял, что ответ уже был в самом вопросе.

про списки в качестве переменных, это неправильно? вроде работает как надо :) хотя я могу чего-то недопонимать, этот кусок кода я спер у cfarmer'a
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: QFileDialog.getexistingdirectory в QGIS\Python

Сообщение Максим Дубинин » 05 фев 2009, 00:15

все понял про списки, все верно, можно проще и понятнее

Код: Выделить всё

for fid in featids: 
       afeature=QgsFeature()
       curLayer.featureAtId(fid,afeature)
       result=afeature.geometry()
       attrmap=afeature.attributeMap()
       attr=attrmap.values()[attrindex]
пристегивайтесь, турбулентность прямо по курсу

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя