ReportView - Окно просмотра отчета

class axipy.ReportView

Базовые классы: DrawableView

Окно с планом отчета. Для создания экземпляра необходимо использовать axipy.ViewManager.create_reportview(). через экземпляр axipy.view_manager. Параметры отчета axipy.render.Report можно получить через свойство ReportView.report().

Пример создания отчета:

reportview = view_manager.create_reportview()

# Добавим полигон
geomItem = GeometryReportItem()
geomItem.geometry = Polygon((10,10), (10, 100), (100, 100), (10, 10))
geomItem.style = PolygonStyle(45, Qt.red)
reportview.report.items.add(geomItem)

# Установим текущий масштаб
reportview.view_scale = 33

Свойства:

can_redo

Возможен ли откат на один шаг вперед.

can_undo

Возможен ли откат на один шаг назад.

is_modified

Есть ли изменения в окне.

mesh_size

Размер ячейки сетки.

position

Размер и положение окна.

report

Объект отчета.

show_borders

Показывать границы страниц.

show_elements_size

Показывать размер элементов.

show_mesh

Показывать сетку привязки.

show_ruler

Показывать линейку по краям.

show_type

Возвращает тип состояния окна.

snap_mode

Включает режим привязки координат при редактировании геометрии в окне карты или отчета.

snap_to_guidelines

Включение режима притяжения элементов отчета к направляющим.

snap_to_mesh

Включение режима притяжения элементов отчета к узлам сетки.

title

Заголовок окна просмотра.

view_scale

Текущий масштаб.

widget

Виджет, соответствующий содержимому окна.

x_guidelines

Вертикальные направляющие.

y_guidelines

Горизонтальные направляющие.

Методы:

clear_guidelines()

Удаляет все направляющие.

clear_selected_guidelines()

Очищает выбранные направляющие.

close()

Закрывает окно.

fill_on_pages()

Наиболее эффективно заполняет пространство отчета масштабированием его элементов.

get_printer()

Ссылка на используемый текущий принтер.

offset(dx, dy)

Производит сдвиг окна карты или отчета.

redo()

Производит откат на один шаг вперед.

reset_parent(parent)

Сбрасывает окно контейнера для карты или таблицы просмотра, если он существует и закрывает его.

save_template(file_name)

Сохраняет отчет в виде шаблона как файл *.tmpl

scale_with_center(scale, center)

Установка нового центра с заданным масштабированием.

set_printer(printer)

Устанавливает для отчета объект PySide2.QtPrintSupport.QPrinter

show([type])

Показывает окно в соответствие с приведенным типом.

undo()

Производит откат на один шаг назад.

Сигналы:

mouse_moved

Сигнал при смещении курсора мыши.

scene_changed

Сигнал об изменении контента окна.

property can_redo: bool

Возможен ли откат на один шаг вперед.

property can_undo: bool

Возможен ли откат на один шаг назад.

clear_guidelines()

Удаляет все направляющие.

clear_selected_guidelines()

Очищает выбранные направляющие.

close()

Закрывает окно.

Примечание

Если при закрытии окна выдается запрос о сохранении данных перед закрытием и необходимо изменить поведение, то это можно сделать через соответствующие типу окна настройки или же через свойство axipy.CurrentSettings.SilentCloseWidget

fill_on_pages()

Наиболее эффективно заполняет пространство отчета масштабированием его элементов.

get_printer() QPrinter

Ссылка на используемый текущий принтер. Для того, чтобы изменить настройки, нужно запросить существующий объект, поменять необходимые значения и снова назначить посредством ReportView.set_printer(). Или же установить другой объект PySide2.QtPrintSupport.QPrinter.

Пример смены свойств у текущего окна отчета
from PySide2.QtGui import QPageLayout, QPageSize
import axipy
# Получение текущего окна отчета
reportview = axipy.view_manager.active
if isinstance(reportview, axipy.ReportView):
    # Получение текущего принтера
    printer = reportview.get_printer()
    # Именение размера страницы
    printer.setPageSize(QPageSize(QPageSize.A3))
    # Изменение ориентации страницы
    printer.setPageOrientation(QPageLayout.Landscape)
    # Установление нового значения
    reportview.set_printer(printer)
property is_modified: bool

Есть ли изменения в окне.

property mesh_size: float

Размер ячейки сетки.

property mouse_moved: Signal

Сигнал при смещении курсора мыши. Возвращает значения в координатах отчета.

Тип результата:

Signal[float, float]

Пример:

reportview.mouse_moved.connect(lambda x,y: print('Coords: {} {}'.format(x, y)))
offset(dx: float, dy: float)

Производит сдвиг окна карты или отчета. Особенностью является то, что при этом сохраняется прежний центр (актуально для карты).

Параметры:
  • dx – Смещение по горизонтали в координатах экрана (пикселях)

  • dy – Смещение по вертикали в координатах экрана (пикселях)

property position: QRect

Размер и положение окна.

redo()

Производит откат на один шаг вперед. При этом возвращается состояние до последней отмены.

property report: Report

Объект отчета.

Результат:

Отчет.

reset_parent(parent: QWidget)

Сбрасывает окно контейнера для карты или таблицы просмотра, если он существует и закрывает его. Это требуется когда окно карты или таблица просмотра необходимо встроить в другое окно.

Параметры:

parent – Окно - новый родитель

Пример встраивания окно карты в диалог:

table = provider_manager.openfile('world.tab')
layer = Layer.create(table)
m = Map([layer])
view = view_manager.create_mapview(m)

# Диалог, в который будет встраиваться
class MyDialog(QDialog):

    def __init__(self ):
        super().__init__()
        # Инициализируем менеджер компоновки
        self.layout = QGridLayout()
        self.setLayout(self.layout)

    def set_mapview(self, view):
        # Устанавливаем окно карты как контент данного диалога
        view.reset_parent(self)
        self.layout.addWidget(view.widget)
        view.show()

dialog = MyDialog()
dialog.resize(500,300)
dialog.set_mapview(view)
dialog.show()
save_template(file_name: str)

Сохраняет отчет в виде шаблона как файл *.tmpl

Параметры:

file_name – Наименование выходного файла.

scale_with_center(scale: float, center: Pnt)

Установка нового центра с заданным масштабированием.

Параметры:
  • scale – Коэффициент масштабирования по отношению к текущему.

  • center – Устанавливаемый центр.

property scene_changed: Signal

Сигнал об изменении контента окна.

Тип результата:

Signal[]

set_printer(printer: QPrinter)

Устанавливает для отчета объект PySide2.QtPrintSupport.QPrinter

Параметры:

printer – Новое значение принтера или измененное запрошенное ранее через ReportView.get_printer()

show(type: int = SHOW_NORMAL)

Показывает окно в соответствие с приведенным типом.

Допустимые значения:

Константа

Значение

Описание

SHOW_NORMAL

1

Обычный показ окна (по умолчанию).

SHOW_MINIMIZED

2

Показ окна в режиме минимизации.

SHOW_MAXIMIZED

3

Показ окна в режиме распахивания.

property show_borders: float

Показывать границы страниц.

property show_elements_size: float

Показывать размер элементов.

property show_mesh: bool

Показывать сетку привязки.

property show_ruler: float

Показывать линейку по краям.

property show_type: int

Возвращает тип состояния окна. Подробнее см. show()

property snap_mode: bool

Включает режим привязки координат при редактировании геометрии в окне карты или отчета.

property snap_to_guidelines: bool

Включение режима притяжения элементов отчета к направляющим.

property snap_to_mesh: bool

Включение режима притяжения элементов отчета к узлам сетки.

property title: str

Заголовок окна просмотра.

undo()

Производит откат на один шаг назад.

property view_scale: float

Текущий масштаб.

property widget: QWidget

Виджет, соответствующий содержимому окна.

Результат:

Qt5 виджет содержимого.

property x_guidelines: XGuidelines

Вертикальные направляющие. Значения содержатся в единицах измерения отчета.

Рассмотрим на примере:

# Добавление вертикальной направляющей
reportview.x_guidelines.append(20)
# Изменение значения направляющей по индексу
reportview.x_guidelines[0] = 80
# Удаление всех направляющих.
reportview.clear_guidelines()
property y_guidelines: YGuidelines

Горизонтальные направляющие. Работа с ними производится по аналогии с вертикальными направляющими.