Сведения о вопросе

FELL

00:45, 24th August, 2020

Теги

python   gtk   pygtk   sdl   pygame    

pyGame в приложении pyGTK

Просмотров: 445   Ответов: 7

Как лучше всего использовать PyGame (SDL) в приложении PyGTK?

Я ищу метод, который позволяет мне иметь область рисования в окне GTK и в то же время иметь возможность управлять событиями GTK и SDL.



  Сведения об ответе

davran

01:21, 22nd August, 2020

Сам я никогда не пробовал этого, но, услышав много рассказов о других людях, которые пробовали, я понял, что это не та дорога, по которой хочется идти.

Есть альтернатива поместить графический интерфейс в pygame сам по себе. Есть много графических инструментов, созданных специально для pygame, которые вы можете использовать. Большинство из них довольно незавершенные, но есть 2 больших, активно обслуживаемых: PGU и OcempGUI . Полный список на сайте pygame находится здесь .


  Сведения об ответе

VERSUION

13:22, 9th August, 2020

Возможно, вас заинтересует этот поток сообщений . Похоже, они рекомендуют не делать этого.


  Сведения об ответе

прога

16:03, 7th August, 2020

PyGame работает гораздо лучше, когда он может управлять своим собственным окном, или даже лучше, использовать весь экран. GTK имеет достаточно гибкие виджеты для создания области рисования.

Однако эта страница может помочь, если вы хотите попробовать ее.


  Сведения об ответе

PAGE

03:05, 13th August, 2020

http://faq.pygtk.org/index.py?file=faq23.042.htp&req=show упоминает все это:

Вам нужно создать область рисования и установить переменную среды SDL_WINDOWID после ее реализации:

 import os

 import gobject
 import gtk
 import pygame

 WINX = 400
 WINY = 200

 window = gtk.Window()
 window.connect('delete-event', gtk.main_quit)
 window.set_resizable(False)
 area = gtk.DrawingArea()
 area.set_app_paintable(True)
 area.set_size_request(WINX, WINY)
 window.add(area)
 area.realize()

 # Force SDL to write on our drawing area
 os.putenv('SDL_WINDOWID', str(area.window.xid))

 # We need to flush the XLib event loop otherwise we can't
 # access the XWindow which set_mode() requires
 gtk.gdk.flush()

 pygame.init()
 pygame.display.set_mode((WINX, WINY), 0, 0)
 screen = pygame.display.get_surface()

 image_surface = pygame.image.load('foo.png')
 screen.blit(image_surface, (0, 0))

 gobject.idle_add(pygame.display.update)

 window.show_all()

 while gtk.event_pending():
     # pygame/SDL event processing goes here
     gtk.main_iteration(False)


  Сведения об ответе

COOL

05:38, 9th August, 2020

Я пробовал сделать это сам некоторое время назад, и у меня никогда не получалось работать идеально. На самом деле я никогда не заставлял его работать вообще под Windows, так как он продолжал рушиться весь OS, и у меня кончилось терпение. Я продолжал использовать его, Хотя это было только важно, он работал на Linux, и это был всего лишь небольшой проект. Я бы настоятельно рекомендовал вам изучить альтернативные варианты. Это всегда было похоже на отвратительный Хак, и я чувствовал себя грязным.


  Сведения об ответе

VCe znayu

08:27, 8th August, 2020

Есть простое решение, которое может сработать для вас.

Напишите PyGTK материал и PyGame материал как отдельные приложения. Затем из приложения PyGTK вызовите приложение PyGame, используя os.system для вызова приложения PyGame. Если вам нужно разделить данные между ними, то используйте базу данных, каналы или IPC.


  Сведения об ответе

DAAA

06:35, 6th August, 2020

Проект сахара имеет несколько видов деятельности, построенных с PyGTK и PyGame.

Они написали поддержку lib, чтобы достичь этого, называется Sugargame . Вы должны быть в состоянии изменить его для обычных приложений PyGTK вместо сахара.

Вот глава в книге развития сахара о том, как его использовать.

Lib позволяет передавать события между GTK и PyGame.

Наслаждайтесь!


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться