как создать интерактивную изометрическую рамку для построения диаграмм в графическом интерфейсе Python (предпочтительно wxpython) - PullRequest
2 голосов
/ 28 февраля 2011

Разрабатываю программное обеспечение для трубопроводов, сейчас оно работает на 2D.Я реализовал очень простой фрейм с помощью wx.paintDC (), он в основном выглядит следующим образом:

def OnDrawing(self, evt):
    dc = wx.PaintDC(self.leftWindow)
    self.leftWindow.PrepareDC(dc)
    dc.Clear()
    for image in self.images[1:]:
        x = image[1][0]
        y = image[1][1]
        img = wx.Image(image[0], wx.BITMAP_TYPE_ANY)
        bmp = wx.BitmapFromImage(img)
        dc.DrawBitmap(bmp, x, y, True)

В результате получается [1] .Кнопки справа используются для добавления секций (труб, клапанов и т. Д.) К правой раме.когда вы нажимаете на кнопку, программа рассчитывает положение и рисует его, поэтому рамка не интерактивна, вы не можете щелкнуть по сегментам трубы или клапанов, не можете изменить ее размер и т. д.

Это очень просто ипросто, но как новый программист это стоило мне времени (и я горжусь этим).Теперь я хочу улучшить это, и теперь я хочу создать интерактивную рамку в стиле 3D, в которой пользователь может создать диаграмму труб «мышкой», щелкнуть по ним, чтобы изменить свойства и т. д.

что я стремлюсь к чему-то вроде этого [2] [3] .с таким изометрическим фоном, как этот [4]

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

Теперь я не знаю, с чего начать, мне интересно "возможно ли это на wx?" , "я должен использовать openGL иличто-то? ".Мне нужно, чтобы вы указали правильное направление.

это возможно реализовать только с помощью wx?или мне нужен pyopengl (ведь я ничего о нем не знаю), или что-то в этом роде?

спасибо !!! ...

1 Ответ

1 голос
/ 28 февраля 2011

Возможно, вы захотите исследовать Python-Ogre. Ogre - это 3D-движок с открытым исходным кодом, а Python-Ogre позволяет вам управлять сценой через Python. Это может позволить вам сосредоточиться на пользовательском интерфейсе, вместо того, чтобы учиться рисовать текстурированные треугольники с помощью pyopengl.

http://python -ogre.org /

...