WidgetManagerService - Менеджер виджетов

class axioma.gui.WidgetManagerService

Примечание

Абстрактный

Менеджер виджетов

Унаследован от:

Методы:

registerWidget(widget)

Заренистрировать виджет в менеджере

Параметры:widget (QWidget) – виджет
count()
Результат:количество всех виджетов
Тип результата:int
count(type)

Количество виджетов заданного типа

Параметры:type (QMetaObject) – тип
Результат:количество
Тип результата:int
allWidgets()

Список всех виджетов

Результат:список виджетов
Тип результата:list [QWidget]
allWidgets(type)

Список виджетов заданного типа

Параметры:type (QMetaObject) – тип
Результат:список виджетов
Тип результата:list [QWidget]
connectWidgetCountChanged(type, context, callback)

Подписаться на изменение количества виджетов определенного типа

Параметры:
  • type (type) – тип виджетов, за количеством которых нужно следить
  • context (QObject) – отвечает за время жизни соединения
  • callback (typing.Callable [[int], None]) – вызываемый метод при изменении количества виджетов; должен принимать ноль или один параметр типа int и возвращать None
from axioma.gui import MapView, ItemView

widgetManager = axioma.app.gui.widgetManager

# без параметров
callbackMap = lambda: print("Number of MapViews has changed")
widgetManager.connectWidgetCountChanged(MapView, None, callbackMap)
# с параметром
callbackItem = lambda itemview_count: print("ItemViews: ", itemview_count)
widgetManager.connectWidgetCountChanged(ItemView, None, callbackItem)
connectWidgetChanged(type, context, callback)

Подписаться на изменение текущего виджета определенного типа

Параметры:
  • type (type) – тип виджета, об изменении которого неоходимо узнать
  • context (QObject) – отвечает за время жизни соединения
  • callback (typing.Callable [[QWidget], None]) – вызываемый метод при смене виджета заданного типа; должен принимать ноль или один параметр типа QWidget и возвращать None
from PyQt5.QtWidgets import QWidget

widgetManager = axioma.app.gui.widgetManager

callbackChanged = lambda: print("Current widget changed")
widgetManager.connectWidgetChanged(QWidget, None, callbackChanged)
connectCurrentWidget(type, signal, context, callback)

Подписаться на сигнал активного виджета. При его смене произойдет переподключение нового активного виджета

Параметры:
  • type (type) – тип виджета, за сигналом которого нужно следить
  • signal (PyQt5.QtCore.pyqtSignal) – сигнал
  • context (QObject) – отвечает за время жизни соединения
  • callback (typing.Callable) – вызываемый метод при смене виджета заданного типа; должен быть совместим с сигналом
from axioma.gui import MapView
from PyQt5.QtWidgets import QPushButton

widgetManager = axioma.app.gui.widgetManager

callbackZoomChanged = lambda zoom: print("Zoom is changed: ", zoom)

# guard контроллирует время жизни соединения
guard = QPushButton("Disconnect")
guard.setAttribute(Qt.WA_DeleteOnClose)
guard.clicked.connect(guard.close)
guard.show()

widgetManager.connectCurrentWidget(MapView, MapView.zoomChanged, guard, callbackZoomChanged)
removeWidget(widget)

Убрать виджет из менеджера

Параметры:widget (QWidget) – виджет
activateWidget(widget)

Активировать виджет

Параметры:widget (QWidget) – виджет