2008-08-25 19 views
8

पीईजीटीके एप्लिकेशन के भीतर पायगैम (एसडीएल) का उपयोग करने का सबसे अच्छा तरीका क्या है?pyGTK अनुप्रयोग के भीतर pyGame

मैं एक ऐसी विधि खोज रहा हूं जो मुझे जीटीके विंडो में एक ड्राइंग क्षेत्र और साथ ही जीटीके और एसडीएल दोनों घटनाओं को प्रबंधित करने में सक्षम हो।

उत्तर

1

आपको this message thread में रुचि हो सकती है। ऐसा लगता है कि वे इसके खिलाफ सिफारिश करते हैं।

7

मैंने कभी इसे स्वयं का प्रयास नहीं किया है, लेकिन कोशिश की अन्य लोगों के बारे में बहुत कुछ सुन रहा है, यह एक सड़क नहीं है जिसे आप नीचे जाना चाहते हैं।

गुई को खुद को पायग में डालने का विकल्प है। विशेष रूप से पिगमेम के लिए निर्मित बहुत सारे गुई टूलकिट हैं जिनका आप उपयोग कर सकते हैं। उनमें से अधिकतर अधूरा हैं, लेकिन 2 बड़े, सक्रिय रूप से बनाए गए हैं: PGU और OcempGUI। Pygame साइट पर पूरी सूची here है।

1

PyGame अपनी खिड़की का प्रबंधन कर सकते हैं, या इससे भी बेहतर, पूरी स्क्रीन का उपयोग कर बेहतर काम करता है। एक ड्राइंग क्षेत्र के निर्माण की अनुमति देने के लिए जीटीके में लचीले पर्याप्त विजेट हैं।

This page मदद कर सकता है, हालांकि, यदि आप इसे आजमा सकते हैं।

0

मैंने कुछ समय पहले ऐसा करने की कोशिश की, और मुझे इसे पूरी तरह से काम करने के लिए कभी नहीं मिला। असल में मुझे इसे विंडोज़ के तहत काम करने के लिए कभी नहीं मिला, क्योंकि यह पूरे ओएस को दुर्घटनाग्रस्त कर रहा था और मैं धैर्य से बाहर भाग गया। मैंने इसका उपयोग जारी रखा, हालांकि यह केवल महत्वपूर्ण था कि यह लिनक्स पर चल रहा था, और केवल एक छोटी परियोजना थी। मैं आपको विकल्पों की जांच करने की दृढ़ता से अनुशंसा करता हूं। यह हमेशा एक बुरा हैक की तरह महसूस किया, और मुझे गंदा महसूस किया।

0

एक आसान समाधान है जो आपके लिए काम कर सकता है।

पीईजीटीके सामान और पायगैम सामान को अलग-अलग अनुप्रयोगों के रूप में लिखें। फिर पीईजीटीके एप्लिकेशन से PyGame एप्लिकेशन को कॉल करने के लिए os.system का उपयोग करके, PyGame एप्लिकेशन को कॉल करें। यदि आपको दोनों के बीच डेटा साझा करने की आवश्यकता है तो या तो डेटाबेस, पाइप या आईपीसी का उपयोग करें।

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 के साथ बनाया गया क्रियाएँ है।

उन्होंने इसे प्राप्त करने के लिए एक समर्थन lib लिखा, जिसे Sugargame कहा जाता है। आप चीनी के बजाय नियमित पीईजीटीके ऐप्स के लिए इसे संशोधित करने में सक्षम होना चाहिए।

यहां इसका उपयोग करने के बारे में chapter in Sugar's development book है।

lib जीटीके और पायगैम के बीच घटनाओं को संचारित करने की अनुमति देता है।

आनंद लें!

संबंधित मुद्दे