2010-07-27 8 views
12

मैं एक खेल है कि एक pygame सतह के भीतर जीयूआई तत्वों पॉप अप करने के सक्षम होने की जरूरत बना रहा हूं। क्योंकि wxPython एसडीएल सतह के चारों ओर चला जाता है, इसके अंदर नहीं This सवाल नहीं है कि मैं क्या चाहता हूँ। अब तक मैं केवल ocemp, pgu, और इस समस्या को अंतरिक्ष में GooeyPy देखा है।मुझे पायगैम के साथ किस gui टूलकिट का उपयोग करना चाहिए?

  • ओसेम्प विशाल और क्रूर दिख रहा है। यह पायथन 2.3 का उल्लेख करता है और सीवीएस रेपो की त्वरित ब्राउज़ में मिली नवीनतम फ़ाइल 2 साल पुरानी थी।
  • मैं GooeyPy काम करने के लिए नहीं मिल सका है (हालांकि मैं बहुत मेहनत की कोशिश नहीं की, अंडे और डेबियन मित्र नहीं हैं) और v0.2 पिछले 2009
  • की फरवरी में अद्यतन किया गया था मैं PGU साथ काम कर रहा है , लेकिन ऐसा लगता है कि यह अनजान है (अंतिम अपडेट 11/2009 और मूल रखरखाव ने इसे त्याग दिया) और यह अपनी उम्र दिखाना शुरू कर रहा है। यह पुरानी स्टाइल कक्षाओं का उपयोग करता है और स्ट्रिंग अपवाद फेंकता है।

तो मेरा प्रश्न, एसओ, यह है: मैं आपके पायगैम अनुप्रयोगों में सुंदर क्लिक करने योग्य बटन पॉप अप करने के लिए किस गुई टूलकिट का उपयोग करूँ? क्या सक्रिय विकास में कोई है?

संपादित सितंबर 2011

यह PGU तरह लग रहा है अभी भी बनाए रखा जा रहा है। अंतिम कार्य 4 दिन पहले से हैं।

उत्तर

2

मैं किसी भी pygame जीयूआई सामान के बारे में पता नहीं कर रहा हूँ, लेकिन यह बहुत अपने खुद के रोल करने के लिए कठिन नहीं होना चाहिए (और हे, हो सकता है यह खुला स्रोत बनाना!)

आप बस कुछ कर रहे हैं सरल बटन आप दो (या तीन) छवियों बनाने के लिए GIMP या Photoshop या कुछ और इस्तेमाल कर सकते हैं - एक ऊपर, नीचे और संभव मंडराना बटन, तो आप अपने खुद घटना पाश/हैंडलर लिखना चाहते हैं कि कुछ इस तरह करना होगा:

  1. माउस की स्थिति पाएं
  2. क्या माउस किसी भी बटन पर माउस है (और कोई बटन दबाया नहीं जाता है)?
  3. प्रदर्शन मंडराना छवि
  4. एक बटन और एक माउस बटन पर माउस क्लिक किया जाता है है?
  5. आग उस बटन के साथ जुड़े घटना
  6. देखें 1

है यही कारण है कि एक सा सरलीकृत, लेकिन यह कम से कम आप एक प्रारंभिक बिंदु देना चाहिए (यदि कोई और नहीं किसी भी pygame जीयूआई पुस्तकालयों है)

+0

यही वह है जिसे मैं टालने की कोशिश कर रहा था। मैं बजाय एक मौजूदा पुस्तकालय लेगा जैसे कि पुगु (जो एलजीपीएल लाइसेंस प्राप्त है) और इसे अपडेट करें। यह 40 स्रोत फाइलें (दस्तावेज़ीकरण की गणना नहीं) और पाइथन कोड की लगभग 7,000 लाइनें हैं। – nmichaels

+0

यह भी संभव है - मैंने कभी भी पुगू का उपयोग नहीं किया है, इसलिए मुझे कोई संकेत नहीं है कि यह कितना उन्नत है - लेकिन यदि यह पहले से ही बहुत प्रारंभिक काम करता है, तो आपके पास आगे बढ़ने और उसे अपडेट करने का हर कारण है। मान लीजिए कि 7,000 लाइनें अच्छी लाइनें हैं, वैसे भी;) –

+0

हाँ, मुझे लगता है कि मैं बस ऐसा कर सकता हूं, मानते हैं कि स्टैक ओवरफ्लो समीकरण में कोई जादू डेटा नहीं जोड़ता है। – nmichaels

2

पुराने होने के बावजूद, आपको इसके लिए एक गुई लाइब्रेरी नहीं है, आप केवल sprites का उपयोग करें। लेबल के लिए आप एक स्प्राइट लेते हैं और इसे प्रस्तुत करने के लिए फ़ॉन्ट देते हैं। बटनों के लिए यह लेबल प्राप्त करता है और परिवर्तनों का पता लगाने के लिए एक सक्रिय स्थिति जोड़ता है और कुछ और होने का कारण बनता है। और एक स्क्रोलर एक बटन के रूप में ही काम करता है और सिर्फ एक लेबल या कुछ elses मूल्य

1

भी देखें के जवाब परिवर्तन: What's the best way to add a GUI to a Pygame application?

विशेष रूप से,, मेरे पूर्व बीटा जीयूआई अगर किसी DavesGUI उपयोग करना चाहते हैं PyGame के लिए टूलकिट, मुझे एक ईमेल भेजें।my reply, there के अंत में मेरे ईमेल पते का एक लिंक है।

0

मैंने एक ऐसा फ़ंक्शन बनाया है जिसे आप किसी भी अतिरिक्त पुस्तकालयों को आयात किए बिना pygame के अंदर उपयोग कर सकते हैं।

def gui(x1, y1, x2, y2, button): 
    mouseX, mouseY = pygame.mouse.get_pos() 
    if mouseX >= x1 and mouseX <= x2 and mouseY >= y1 and mouseY <= y2: 
     if button: 
      return True 
     else: 
      return False 
    else: 
     return False 

आप इस तरह के फ़ंक्शन पर कॉल करते हैं (मैं एक उदाहरण के रूप में मेनू का उपयोग कर रहा हूं)।

topCornerX = #X coordinate of top right corner 
topCornerY = #Y coordinate of top right corner 
bottomCornerX = #X coordinate of bottom left corner 
bottomCornerY = #Y coordinate of bottom left corner 

while menu: 
    for event in pygame.event.get(): 
     mouseLeft, mouseMiddle, mouseRight = pygame.mouse.get_pressed() 
     if gui(topCornerX, topCornerY, bottomCornerX, bottomCornerY, '''mouseLeft, mouseMiddle, or mouseRight''') 
      menu = False 

फिर आप अपने आउटपुट के साथ जारी रखेंगे।

यह आयताकार के निर्देशांक लेने और आयताकार के अंदर अपने माउस पद की तुलना करके काम करता है और यह सही है कि वे सही बटन पर क्लिक करते हैं और आयताकार के अंदर हैं। उम्मीद है की यह मदद करेगा।

0

मैं somethings के लिए एक जीयूआई का उपयोग नहीं कर पर milleja46 से सहमत हैं,

मैंने पाया 2 सरल मेनू पॉपअप कार्यक्रमों यहाँ के बजाय:

परिष्कृत मेनू: http://code.google.com/p/simple-pygame-menu/

सरल पॉपअप विंडो: How to specify what actually happens when Yes/No is clicked with ctypes MessageBoxW?

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