OPENGL Программирование пользовательского интерфейса - PullRequest
2 голосов
/ 17 сентября 2008

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

  • питон
  • openGL (мне нужно 3D, смешивание, текстуры и т.д.)
  • PyOpenGL
  • wx / pywx - управление окнами, диалогами и т. Д.

Последний компонент - WX - поднимает вопрос. Я могу собрать очень красивое приложение (прототипы выглядят гладко), но когда мне нужно взаимодействовать с пользователем, чтобы задавать вопросы, получать информацию, мне приходится использовать WX. Из-за этого приложение выглядит непоследовательным, имея традиционный пользовательский интерфейс с традиционными диалоговыми окнами, комбо и вводом текста поверх полноэкранного 3D-приложения со смешиванием, плавным движением, текстурами и т. Д.

Кто-нибудь разрабатывал графический интерфейс с использованием OpenGL и python? Можете ли вы поделиться со мной инструментами и / или трюками, которые вы использовали? Мне нужны комбо, ввод текста, кнопки, радио, кнопки выбора, просмотр дерева.

Существуют некоторые наборы инструментов, но они либо неполные, либо старые и не обслуживаются. Отличным примером является pyUI (http://pyui.sourceforge.net/) - выглядит гладким, но нетронутым в течение многих лет.

Ответы [ 9 ]

12 голосов
/ 17 сентября 2008

Это не ответ, скорее просьба: не делайте этого.

Ваши переопределенные виджеты будут испытывать недостаток во всех видах функциональности, которые упустят пользователи. Будут ли ваши текстовые поля поддерживать drag'n'drop? Копировать вставить? Сценарии справа налево? Drag-выбрать? Двойной щелчок-выбрать? Будут ли все эти механизмы следовать стандартным соглашениям каждой платформы, которую вы поддерживаете?

С Wx ваши виджеты могут выглядеть несовместимыми с приложением, но, по крайней мере, они будут выглядеть согласованно с ОС, что не менее важно. И что еще более важно, они будут делать то, что ожидают пользователи.

(редактировать) Три сообщения и -3 балла? Винт это логово карма-шлюх. Оригинальный постер: я реализовал базовый набор виджетов в OpenGL (для игрового интерфейса), и это был бесконечный кошмар работы.

7 голосов
/ 26 сентября 2008

В последних версиях QT вы можете рисовать виджеты в вашего контекста OpenGL, если вы действительно хотите сделать что-то подобное. В противном случае есть CEGui , который используется в некоторых игровых движках.

Внедрение GUI-виджетов самостоятельно, если вы не хотите назидать себя - это пустая трата времени, если вы не будете удовлетворены самым элементарным внешним видом и функциональностью.

3 голосов
/ 17 сентября 2008

Python + Qt + OpenGL - Я уверен, что любое приложение может быть написано быстрее и лучше, используя Python. QT4 является кроссплатформенным, красивым, реализует все, что вам нужно, от виджетов (доступность и т. Д.), И ... он интегрируется с OpenGL. Это означает, что вы можете просто иметь виджет, который является областью просмотра для openGL-материалов, которые вы отображаете в своем коде.

Еще одно 3D-совместимое решение, которое охватывало бы большинство вещей, но не так важно для пользовательского интерфейса, - это расширение Blender3D скриптом на python. Он имеет возможности 3D и рендеринга, вы все равно пишете его на python, и он будет кроссплатформенным - и вы получите инструменты более высокого уровня для работы с 3D, чем один только openGL. Существуют очевидные недостатки, в основном с точки зрения пользовательского интерфейса по сравнению с PyQT, но это может быть сделано.

1 голос
/ 08 октября 2011

Blender - единственное из известных мне приложений с графическим интерфейсом, полностью написанным на OpenGL ... Единственная проблема в том, что это в C ++.

Я тоже разработчик Python, но я только начинаю использовать OGL

Честно говоря, я не думаю, что есть какие-либо инструменты для разработки GUI в OGL ...

разработчики Blender предоставляют мне обойденную документацию вместо прямой помощи ... но я дам вам знать, что я понял;)

EDIT: Вот немного документации по функциям PyOpenGL: http://pyopengl.sourceforge.net/documentation/manual/reference-GLUT.html

1 голос
/ 17 сентября 2008

И wx, и QT отлично работают над созданием приложения, которое соответствует внешнему виду операционной системы. Также возможно внедрить все виджеты непосредственно в openg, в этом посте slashdot перечислены некоторые доступные наборы

http://ask.slashdot.org/askslashdot/02/12/24/1813219.shtml?tid=156 Лиса, вероятно, самая развитая, но выглядит как окна на всех платформах.

1 голос
/ 17 сентября 2008

Попробуйте Qt вместо wx.

QT является кроссплатформенным, и вы можете многое стилизовать, используя CSS. Это очень хорошо задокументировано и имеет отличные привязки к Python. Фактически, я использую документацию C ++, а не документацию PyQT.

1 голос
/ 17 сентября 2008

Возможно, вы захотите взглянуть на Беспорядок , это выглядит довольно круто. Я еще не использовал его, но собираюсь использовать его в следующем личном проекте.

0 голосов
/ 21 октября 2014

" cegui " - хороший выбор, есть также графический редактор под названием "ceed" для генерации XML-файлов макета. У cegui также есть привязки к Python, и она хорошо документирована и используется во многих игровых движках

0 голосов
/ 08 октября 2011

мой друг.
Я думаю, что нашел ваш ответ;)
http://glinter.sourceforge.net/

Я еще не пробовал, но это выглядит довольно многообещающе. (Я отредактирую это, если это не сработает)

EDIT:
эх ...
он использует Tk, PMW и WX ...
(не совсем то, что я хочу)

Вы можете попробовать загрузить CVS ...
(выпущенных пакетов нет, но CVS работает)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...