2008-08-25 8 views
8

PyGTKアプリケーション内でPyGame(SDL)を使用する最も良い方法は何ですか?pyGTKアプリケーション内のpyGame

私は、GTKウィンドウに描画領域を持ち、同時にGTKとSDLの両方のイベントを管理できるメソッドを探しています。

答えて

7

私はそれを自分自身で試みたことはありませんでしたが、試したことのある他の人たちのことをたくさん聞いています。

guiをpygame自体に置くという選択肢があります。あなたが使うことができるpygame用に特別に作られたguiツールキットがたくさんあります。それらのほとんどはむしろ未完成ですが、積極的に管理されている2つの大きなものがあります:PGUOcempGUIです。パイゲームサイトの全リストはhereです。

1

PyGameは、独自のウィンドウを管理することができ、さらには画面全体を使用することができます。 GTKには、描画領域の作成を可能にする柔軟なウィジェットがあります。

This pageでも、試してみてください。

0

私はこれを少し前にやってみましたが、完璧に動作することはありませんでした。実際には、OS全体をクラッシュさせてしまい、忍耐を使い果たしてしまったので、Windowsで動作することはありませんでした。私はそれを使用し続けましたが、それはLinux上で実行されたことだけが重要であったため、小さなプロジェクトでした。代替案を検討することを強くお勧めします。それはいつも不快なハックのように感じられ、私は汚い気分にさせた。

0

あなたに適した簡単な解決策があります。

PyGTK stuffとPyGame stuffを別々のアプリケーションとして記述してください。次に、PyGTKアプリケーションからPyGameアプリケーションを呼び出し、os.systemを使用してPyGameアプリケーションを呼び出します。 2つの間でデータを共有する必要がある場合は、データベース、パイプまたはIPCを使用します。

1

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) 
0

シュガープロジェクトはPyGTKをとpygameのダウンロードで構築されたいくつかの活動があります。

これを達成するために、彼らはSugargameと呼ばれるサポートライブラリを作成しました。あなたはSugarの代わりに通常のPyGTKアプリのためにそれを変更できるはずです。

使用方法についてはchapter in Sugar's development bookです。

libは、GTKとPyGameの間でイベントをやりとりすることができます。

お楽しみください!