Классический вид
Классический вид
Здравствуйте.
Подскажите, как работать с классическим видом?
Если я добавляю группы, в ленточном меню, при переходе в классический, все элементы выводятся списком, и в меню, и в одной панели инструментов.
1. Как программно создать, подменю?
2. Как в меню добавить линию разделителя?
3. Как добавить команду только в меню, не включая ее в панель инструментов (типа команды Сохранить копию и пр.)?
4. Как в одно приложение добавить несколько своих панелей инструментов?
Подскажите, как работать с классическим видом?
Если я добавляю группы, в ленточном меню, при переходе в классический, все элементы выводятся списком, и в меню, и в одной панели инструментов.
1. Как программно создать, подменю?
2. Как в меню добавить линию разделителя?
3. Как добавить команду только в меню, не включая ее в панель инструментов (типа команды Сохранить копию и пр.)?
4. Как в одно приложение добавить несколько своих панелей инструментов?
Re: Классический вид
Здравствуйте!
У нас базовым является ленточный интерфейс, а классический формируется по общему принципу построения интерфейса.
По пунктам:
1. Подменю добавляется в меню модули по указанному наименованию вкладки, если такое имя отсутствует в интерфейсе (пример ниже). Если есть, то в него.
2. К сожалению, разделители на данный момент не включены в релиз. Будут позже.
3. Если иконка для действия отсутствует, оно не добавляется в панель инструментов. Только в меню.
4. См. пример ниже (формируются две панели инструментов).
У нас базовым является ленточный интерфейс, а классический формируется по общему принципу построения интерфейса.
По пунктам:
1. Подменю добавляется в меню модули по указанному наименованию вкладки, если такое имя отсутствует в интерфейсе (пример ниже). Если есть, то в него.
Код: Выделить всё
position = Position('Пользователькое', '') # Добавляется подменю в меню "Модули" и далее действия заносятся в нее
position = Position('Таблица', '') # Для занесения действий используется существующий пункт меню
3. Если иконка для действия отсутствует, оно не добавляется в панель инструментов. Только в меню.
4. См. пример ниже (формируются две панели инструментов).
Код: Выделить всё
from axipy import AxiomaPlugin, Position
from axipy.app import mainwindow
from PySide2.QtWidgets import QAction
class Plugin(AxiomaPlugin):
def load(self):
self.__action1 = self.create_action('Пример действия 1', icon='://icons/share/32px/run3.png', on_click=self.on_clicked)
self.__action2 = self.create_action('Пример действия 2', icon='://icons/share/32px/run3.png', on_click=self.on_clicked)
self.__action3 = self.create_action('Пример действия без создания кнопки', on_click=self.on_clicked)
position1 = Position('Пользователькое1', '')
#position1 = Position('Таблица', '')
position1.add(self.__action1)
position1.add(self.__action2)
position1.add(self.__action3)
self.__action4 = self.create_action('Пример действия 3', icon='://icons/share/32px/run3.png', on_click=self.on_clicked)
position2 = Position('Пользователькое2', '')
position2.add(self.__action4)
def unload(self):
self.__action1.remove()
self.__action2.remove()
self.__action3.remove()
self.__action4.remove()
def on_clicked(self):
print('Clicked')
Re: Классический вид
Спасибо за разъяснения.
А еще подскажите, как в плагине создать свое плавающее ui окно с использованием axipy? Можно в том же примере, что вы написали выше.
А то уже весь мозг себе сломал. Просто в скрипте выводит, а в плагине никак не разберусь.
А еще подскажите, как в плагине создать свое плавающее ui окно с использованием axipy? Можно в том же примере, что вы написали выше.
А то уже весь мозг себе сломал. Просто в скрипте выводит, а в плагине никак не разберусь.
Re: Классический вид
Добрый день.
ui окно - диалога ?
ui окно - диалога ?
Re: Классический вид
Просто форма. Это не совсем диалог, это окно, которое не блокирует работу аксиомы и его можно прикрепить к разным сторонам основного окна.
Пример, открытые данные, Окна, Управление слоями и пр.
Пример, открытые данные, Окна, Управление слоями и пр.
Re: Классический вид
Можно рассмотреть в качестве примера https://github.com/kasim73/TileServices форма поднимается в правой панели
Re: Классический вид
Как я понял из документации https://axioma-gis.ru/axipy/dev-guide/l ... tool-panel разработчики ввели ActiveToolPanel специально для этих целей
Re: Классический вид
Здравствуйте!
Прилагаю пример. В нем два варианта:
1,
on_clicked - это мы используем форму *.ui, которую можно сделать посредством внешней программы, именуемой qtdesigner. Мы ее не поставляем, но можно попробовать взять с неофициального сайта.
https://build-system.fman.io/qt-designer-download
2.
on_clicked_2 - элементы управления добавляются программно.
Прилагаю пример. В нем два варианта:
1,
on_clicked - это мы используем форму *.ui, которую можно сделать посредством внешней программы, именуемой qtdesigner. Мы ее не поставляем, но можно попробовать взять с неофициального сайта.
https://build-system.fman.io/qt-designer-download
2.
on_clicked_2 - элементы управления добавляются программно.
Код: Выделить всё
from axipy import AxiomaPlugin, Position
from axipy.app import mainwindow
from PySide2.QtWidgets import QDockWidget, QWidget, QPushButton, QLineEdit, QVBoxLayout
from PySide2.QtCore import Qt
from PySide2.QtGui import QIcon
from PySide2.QtUiTools import QUiLoader
import os
class Plugin(AxiomaPlugin):
def load(self):
self.__action = self.create_action('Пример действия1',
icon='://icons/share/32px/run3.png', on_click=self.on_clicked)
position = Position('Основные', 'Команды')
position.add(self.__action)
self.dock = None
def unload(self):
self.__action.remove()
if self.dock != None:
mainwindow.remove_dock_widget(self.dock)
self.dock = None
def on_clicked(self):
if self.dock == None:
self.dock = QDockWidget(self.tr('Пример панели'))
widget = QWidget()
uiFile = os.path.join(os.path.dirname(__file__), "form.ui")
self.__ui = QUiLoader().load(uiFile, widget)
self.__ui.pushButton.clicked.connect(lambda: print('Clicked'))
self.dock.setWidget(widget)
mainwindow.add_dock_widget(self.dock, Qt.RightDockWidgetArea)
def on_clicked_2(self):
if self.dock == None:
self.dock = QDockWidget(self.tr('Пример панели'))
widget = QWidget()
button = QPushButton("Кнопка")
button.clicked.connect(lambda: print('Реакция на кнопку'))
edit = QLineEdit("текст")
layout = QVBoxLayout()
layout.addWidget(button)
layout.addWidget(edit)
layout.addStretch()
widget.setLayout(layout)
self.dock.setWidget(widget)
mainwindow.add_dock_widget(self.dock, Qt.RightDockWidgetArea)
edit.setFocus()
- Вложения
-
- sample.zip
- (1.48 КБ) 407 скачиваний
Re: Классический вид
Вся информация оказалась полезна.
Спасибо всем, разобрался
Спасибо всем, разобрался
Re: Классический вид
В результате экспериментов появились следующие проблемы:
На панели появился инструмент, который в окне модулей отключен, но при загрузке он всегда появляется. Он ни на какие действия не реагирует и удаляться не хочет.
Каким способом его можно найти и удалить?
Также, при запуске моего модуля, в нижнем правом углу появляется сообщение "Действие с именем <имя моего инструмента> уже существует в системе. ...".
Что бы это значило и как это исправить?
На панели появился инструмент, который в окне модулей отключен, но при загрузке он всегда появляется. Он ни на какие действия не реагирует и удаляться не хочет.
Каким способом его можно найти и удалить?
Также, при запуске моего модуля, в нижнем правом углу появляется сообщение "Действие с именем <имя моего инструмента> уже существует в системе. ...".
Что бы это значило и как это исправить?