Результат будет такой:
Плагины
Re: Плагины
- Вложения
-
- Screenshot_20240402_155911_popup.png (96.28 КБ) 5530 просмотров
Re: Плагины
Дмитрий ! Благодарю Вас !!!
Буду пробовать !!!
Буду пробовать !!!
Re: Плагины
Доброго времени суток "Gismap"
Активное окно ,с Вашей помощью, я сумел отследить ,а отследить(извлечь) имена и количество таблиц активного окна не сумел.
примечание: Смог определить количество и имена всех открытых таблиц во всех окнах.
Активное окно ,с Вашей помощью, я сумел отследить ,а отследить(извлечь) имена и количество таблиц активного окна не сумел.
примечание: Смог определить количество и имена всех открытых таблиц во всех окнах.
Re: Плагины
Доброго времени суток Форумчане !!!
Как отследить (извлечь) имена и количество таблиц активного окна , открытого средствами ГИС Аксиома.
(окон с открытыми разными таблицами может быть несколько)
попробовал применить :
23.2 ListLayers - Список слоев карты
class axipy.ListLayers
Группа слоев. Может включать в себя как слои axipy.Layer так и группы слоев
axipy.ListLayers. Пример использования см axipy.Map.layers
Свойства:
count Количество слоев и групп слоев.
выдает ошибку : не определена count.
p.s. как правильно составить операнд.
Как отследить (извлечь) имена и количество таблиц активного окна , открытого средствами ГИС Аксиома.
(окон с открытыми разными таблицами может быть несколько)
попробовал применить :
23.2 ListLayers - Список слоев карты
class axipy.ListLayers
Группа слоев. Может включать в себя как слои axipy.Layer так и группы слоев
axipy.ListLayers. Пример использования см axipy.Map.layers
Свойства:
count Количество слоев и групп слоев.
выдает ошибку : не определена count.
p.s. как правильно составить операнд.
Re: Плагины
Добрый день.
act_map_view=view_manager.active
''' layers - слои активного окна '''
layers=act_map_view.map.layers
count_layer=layers.count
for layer in layers:
print(layer..title)
act_map_view=view_manager.active
''' layers - слои активного окна '''
layers=act_map_view.map.layers
count_layer=layers.count
for layer in layers:
print(layer..title)
Re: Плагины
Здравствуйте!
Code: Select all
import axipy
# Количество таблиц
print(axipy.view_manager.active.map.layers.count)
# Перечень таблиц (через свойство data_object)
for layer in axipy.view_manager.active.map.layers:
print(layer.data_object.name)
Re: Плагины
Уважаемые Форумчане : Александр, Дмитрий, Андрей, gismap !!!
Я Благодарен Вам за помощь !!!!
Мое изучение Python API в среде ГИС Аксиома происходит по алгоритму: мой вопрос ? Ваш ответ.
И Ваши ответы гораздо понятнее и логичнее ,чем Руководство разработчика .
.... "axipy.view_manager" - об этом в руководстве ни словечка ...(только фрагменты в примерах - понимай как хочешь...)
Надеюсь на новую редакцию "Руководства разработчика"
Еще раз примите мои уверения в совершеннейшем к Вам почтении.
Я Благодарен Вам за помощь !!!!
Мое изучение Python API в среде ГИС Аксиома происходит по алгоритму: мой вопрос ? Ваш ответ.
И Ваши ответы гораздо понятнее и логичнее ,чем Руководство разработчика .
.... "axipy.view_manager" - об этом в руководстве ни словечка ...(только фрагменты в примерах - понимай как хочешь...)
Надеюсь на новую редакцию "Руководства разработчика"
Еще раз примите мои уверения в совершеннейшем к Вам почтении.
Re: Плагины
https://axioma-gis.ru/axipy/dev-guide/5 ... r.mapviews
Примечание
Используйте готовый экземпляр этого класса view_manager
Примечание
Используйте готовый экземпляр этого класса view_manager
Re: Плагины
Доброго времени суток!
Вероятно этот дополнительный вопрос к Вам Дмитрий!
Относительно создания пользовательского пункта меню при нажатии правой кнопки мыши в активном окне.
Вставил операнды в свой модуль :
class MapTopik(Plugin):
def __init__(self) -> None:
self.menu = axipy.view_manager.active.widget.findChild(PySide2.QtWidgets.QMenu)
self.menu.addAction("Закрыть таблицы активного окна", lambda: self.closew())
self._title: str = self.tr("MapTopik")
self._action1: ActionButton = ActionButton(
title=self.tr("Открыть землю"),
on_click=self.zml_open
)
position = Position(tr("Основные"), tr("Команды"))
position.add(self._action1)
.......................................
.......................................
def unload(self) -> None:
self._action1.remove()
self._action2.remove()
...................................
запускаю плагин
открыто два окошка с таблицами. Кликаем правую кнопку мыши - есть пользовательский пункт меню :"Закрыть таблицы активного окна"
, работает корректно. Активизируем другое окно и кликаем правую кнопку мыши - пусто , пункта меню "Закрыть таблицы активного окна" - нет.
Возвращаемся на первое окно и кликаем правую кнопку - пункт меню "Закрыть таблицы активного окна" - есть.
При отключении моего модуля "MapTopik" в диалоговом окне "Модули" , раздел "Установлено" . пункт меню "Закрыть таблицы активного окна"
, при нажатии правой кнопки мыши остается.
как дективировать , закрыть этот пункт меню , при закрытии моего модуля.
Вероятно этот дополнительный вопрос к Вам Дмитрий!
Относительно создания пользовательского пункта меню при нажатии правой кнопки мыши в активном окне.
Вставил операнды в свой модуль :
class MapTopik(Plugin):
def __init__(self) -> None:
self.menu = axipy.view_manager.active.widget.findChild(PySide2.QtWidgets.QMenu)
self.menu.addAction("Закрыть таблицы активного окна", lambda: self.closew())
self._title: str = self.tr("MapTopik")
self._action1: ActionButton = ActionButton(
title=self.tr("Открыть землю"),
on_click=self.zml_open
)
position = Position(tr("Основные"), tr("Команды"))
position.add(self._action1)
.......................................
.......................................
def unload(self) -> None:
self._action1.remove()
self._action2.remove()
...................................
запускаю плагин
открыто два окошка с таблицами. Кликаем правую кнопку мыши - есть пользовательский пункт меню :"Закрыть таблицы активного окна"
, работает корректно. Активизируем другое окно и кликаем правую кнопку мыши - пусто , пункта меню "Закрыть таблицы активного окна" - нет.
Возвращаемся на первое окно и кликаем правую кнопку - пункт меню "Закрыть таблицы активного окна" - есть.
При отключении моего модуля "MapTopik" в диалоговом окне "Модули" , раздел "Установлено" . пункт меню "Закрыть таблицы активного окна"
, при нажатии правой кнопки мыши остается.
как дективировать , закрыть этот пункт меню , при закрытии моего модуля.
Re: Плагины
Здравствуйте!
Прошу прощения за задержку.
Данная функция добавления меню в окно недокументирована и добавляет только в текущее окно. Для того, чтобы оно добавлялось во все окна, нужно позаботиться дополнительно.
Или же при переключении активного окна "перекидывать" его на новое текущее окно.
В данном примере создаваемое действие перебрасывается в контекстное меню при изменении активного окна.
Прошу прощения за задержку.
Данная функция добавления меню в окно недокументирована и добавляет только в текущее окно. Для того, чтобы оно добавлялось во все окна, нужно позаботиться дополнительно.
Или же при переключении активного окна "перекидывать" его на новое текущее окно.
В данном примере создаваемое действие перебрасывается в контекстное меню при изменении активного окна.
Code: Select all
import typing
import axipy as axp
from PySide2 import QtCore as Qc
from PySide2 import QtWidgets as Qw
class ExamplePluginContextMenu(axp.Plugin):
def __init__(self) -> None:
self._action: typing.Optional[Qw.QAction] = None
def load(self) -> None:
self._action = Qw.QAction(self.tr('Закрыть таблицы активного окна'))
self._action.triggered.connect(self.closew)
axp.view_manager.active_changed.connect(self.on_active_changed)
self.on_active_changed()
def unload(self) -> None:
self._action.deleteLater()
def on_active_changed(self):
if isinstance(axp.view_manager.active, axp.MapView):
menu = axp.view_manager.active.widget.findChild(Qw.QMenu)
if not menu.actions():
Qc.QTimer.singleShot(100, self.on_active_changed)
return
if self._action not in menu.actions():
menu.insertAction(menu.actions()[-1], self._action)
def closew(self) -> None:
print('closew')