pyGame в приложении pyGTK - PullRequest
       34

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

9 голосов
/ 25 августа 2008

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

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

Ответы [ 7 ]

7 голосов
/ 26 августа 2008

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

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

1 голос
/ 04 декабря 2008

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)
1 голос
/ 28 августа 2008

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

Эта страница может помочь, хотя, если вы хотите попробовать.

1 голос
/ 25 августа 2008

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

0 голосов
/ 08 ноября 2013

В проекте Sugar есть несколько Активов, построенных с PyGTK и PyGame.

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

Вот глава в книге разработчиков Sugar о том, как ее использовать.

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

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

0 голосов
/ 14 октября 2008

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

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

0 голосов
/ 18 сентября 2008

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

...