Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2019 10:04:41

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Графический редактор

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….. ), чтобы картинка обновилась в окне виджета.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 27, 2019 10:06:15)

Офлайн

#2 Фев. 27, 2019 10:09:43

Rombler
Зарегистрирован: 2019-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический редактор

PEHDOM
Блин. Моих знаний уже на это не хватает.

Офлайн

#3 Фев. 27, 2019 10:34:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Графический редактор

Rombler
Блин. Моих знаний уже на это не хватает.
А зачем вообще встраивать pygame в Qt программу? Рисуйте просто в pygame.



Офлайн

#4 Фев. 27, 2019 10:42:35

Rombler
Зарегистрирован: 2019-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический редактор

FishHook
Кроме картинки должен быть ещё и текст с координатами (программа для станка чпу). и этот текст с картинкой (отображение движение фрезы) постоянно должен взаимодействовать. Кроме этого куча кнопок и инструментов будет. Примерно как на фото вначале все должно получиться.

Офлайн

#5 Фев. 27, 2019 10:56:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Графический редактор

Ну и нарисуйте свои кнопки пайгеймом, и текст тоже. Вы понимаете, вы ведь сейчас не программированием занимаетесь. Кнопочки, значёчки, крючечки и рюшечки - это все вторичная фигня. Вы сначала алгоритм постройте, а разукрасить окошко - это ерунда. Вы почему-то твердо решили, что ваши мучения сразу кончатся, как только вы научитесь рисовать кнопки, а работа с проекциями трехмерного объекта - это как-то само сделается. А тем не менее это и есть ваша основная задача, и это не простая задача. Вам бы этим и заниматься, а не о кнопках думать.



Отредактировано FishHook (Фев. 27, 2019 10:56:43)

Офлайн

#6 Фев. 27, 2019 12:12:09

Rombler
Зарегистрирован: 2019-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический редактор

Я в программировании новичок. Посмотрел ролики про PyQt. Всё просто и понятно. С пайгейм думаю сложнее будет работать с текстом. (текст будет большим и может редактироваться на месте)

Офлайн

#7 Фев. 27, 2019 12:54:13

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Графический редактор

Rombler честно говоря, я както пропустил что pyGame умеет работать с 3D, оно ж на базе SDL сделано, а SDL только 2Д умеет. Нет, конечно же по сути 3Д это проекция на плоскость, но вам же придется самому писать всю математику по проэцированию для этого. Так зачем тогда использовать pyGame? используйте PyQt, там есть QPainter который умеет рисвать точки, линии, многоугольники, овалы, дуги и прочее. можно устанавливать цвет, тощину, и стиль линии.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#8 Фев. 27, 2019 13:19:26

Rombler
Зарегистрирован: 2019-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический редактор

Нашел вот такой пример.

 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. А вот на экран выводит уже пайгейм.

Офлайн

#9 Фев. 27, 2019 13:56:20

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Графический редактор

Rombler
Нашел вот такой пример.
Любите вы вырывать гланды через задний проход. А чем вас не устраивает QGLWidget ? это специальный виджет в qt для отрисовки OpenGl графики. И не нужен посредник в виде pyGame.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 27, 2019 13:56:43)

Офлайн

#10 Фев. 27, 2019 15:36:35

Rombler
Зарегистрирован: 2019-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический редактор

Н

PEHDOM
Ну да. Это наверное то что нужно. Попробую поразбираться.
Спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version