Найти - Пользователи
Полная версия: Графический редактор
Начало » Python для новичков » Графический редактор
1 2 3 4 5
PEHDOM
Rombler
Я так понимаю там pygame встраивается целиком в форму а не в отдельное окошко виджета.
Как я понял он там даже не встраиваеться, а просто перерисовываеться. Берeться из pygame сырые данные self.data =surface.get_buffer().raw и потом рисуется картинка уже на QImage self.image=QtGui.QImage(self.data,w,h,QtGui.QImage.Format_RGB32)
Не знаю насколько таков вариант подходит вам, но по идее вам если нужно будет вращать, приближать , делать еще чтото, то придеться постоянно проделывать эти манипуляции(surface.get_buffer()….QtGui.QImage(self.data….. ), чтобы картинка обновилась в окне виджета.
Rombler
PEHDOM
Блин. Моих знаний уже на это не хватает.
FishHook
Rombler
Блин. Моих знаний уже на это не хватает.
А зачем вообще встраивать pygame в Qt программу? Рисуйте просто в pygame.
Rombler
FishHook
Кроме картинки должен быть ещё и текст с координатами (программа для станка чпу). и этот текст с картинкой (отображение движение фрезы) постоянно должен взаимодействовать. Кроме этого куча кнопок и инструментов будет. Примерно как на фото вначале все должно получиться.
FishHook
Ну и нарисуйте свои кнопки пайгеймом, и текст тоже. Вы понимаете, вы ведь сейчас не программированием занимаетесь. Кнопочки, значёчки, крючечки и рюшечки - это все вторичная фигня. Вы сначала алгоритм постройте, а разукрасить окошко - это ерунда. Вы почему-то твердо решили, что ваши мучения сразу кончатся, как только вы научитесь рисовать кнопки, а работа с проекциями трехмерного объекта - это как-то само сделается. А тем не менее это и есть ваша основная задача, и это не простая задача. Вам бы этим и заниматься, а не о кнопках думать.
Rombler
Я в программировании новичок. Посмотрел ролики про PyQt. Всё просто и понятно. С пайгейм думаю сложнее будет работать с текстом. (текст будет большим и может редактироваться на месте)
PEHDOM
Rombler честно говоря, я както пропустил что pyGame умеет работать с 3D, оно ж на базе SDL сделано, а SDL только 2Д умеет. Нет, конечно же по сути 3Д это проекция на плоскость, но вам же придется самому писать всю математику по проэцированию для этого. Так зачем тогда использовать pyGame? используйте PyQt, там есть QPainter который умеет рисвать точки, линии, многоугольники, овалы, дуги и прочее. можно устанавливать цвет, тощину, и стиль линии.
Rombler
Нашел вот такой пример.
 import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
verticies = ((1, -1, -1),(1, 1, -1),(-1, 1, -1),(-1, -1, -1),(1, -1, 1),(1, 1, 1),(-1, -1, 1),(-1, 1, 1))  ##вершины
edges = ((0,1),(0,3),(0,4),(2,1),(2,3),(2,7),(6,3),(6,4),(6,7),(5,1),(5,4),(5,7))  ##ребра
def Cube():
    glBegin(GL_LINES)
    for edge in edges:
        for vertex in edge:
            glVertex3fv(verticies[vertex]) ##РИСУЕМ ЛИНИИ ПОПОРЯДКУ ИЗ СПИСКА
    glEnd()
def main():
    pygame.init()
    display = (800,600)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
    gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
    glTranslatef(0.0,0.0, -5)
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: ##пока не нажат выход работаем
                pygame.quit()
                quit()
        glRotatef(1, 3, 1, 1) ##glRotatef умножает текущую матрицу на матрицу вращения. Параметры здесь: angle, x, y и z.
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)   ##glClear, который, как и любая другая функция очистки. Мы указываем здесь пару констант, которые говорят OpenGL, что именно мы очищаем.
        Cube()
        pygame.display.flip()  ##pygame.дисплей.флип (), который обновляет наш дисплей
        pygame.time.wait(10) ##pygame.время.подождите (10)
main()
Всю математику преобразования 3d проецирования берёт на себя OpenGL. А вот на экран выводит уже пайгейм.
PEHDOM
Rombler
Нашел вот такой пример.
Любите вы вырывать гланды через задний проход. А чем вас не устраивает QGLWidget ? это специальный виджет в qt для отрисовки OpenGl графики. И не нужен посредник в виде pyGame.
Rombler
Н
PEHDOM
Ну да. Это наверное то что нужно. Попробую поразбираться.
Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB