2012-09-21 15 views
5

मैंने पहले पायथन में काम नहीं किया है। मुझे वास्तव में एक साधारण 2 डी सतह की आवश्यकता है जहां मैं एक तीर रख सकता हूं और फिर तीर की स्थिति और कोण को बदलने में सक्षम हो सकता हूं।पाइथन में तीर के साथ सरल 2 डी सतह?

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

क्या ऐसे कुछ अन्य उपकरण हैं जो इस तरह के साधारण सामान के लिए अधिक उपयुक्त हैं? http://wxpython.org/docs/api/wx.Image-class.html:

धन्यवाद

उत्तर

0

wxPython जीयूआई टूलकिट (AFAIK बेहतर और TkInter वैसे भी अधिक से अधिक पेशेवर माना जाता है) अपनी छवि वर्ग के लिए एक घुमाने विधि है।

पायथन इमेजिंग लाइब्रेरी (एक जीयूआई टूलकिट नहीं, बल्कि एक इमेजिंग लाइब्रेरी) इसी प्रकार छवि रोटेशन का समर्थन करता है: http://effbot.org/imagingbook/image.htm

+0

आप "अधिक पेशेवर" को कैसे परिभाषित करते हैं? वह बयान मुझे कोई समझ नहीं आता है। –

+0

परिणामस्वरूप जीयूआई के देखो और महसूस से। मेरे पास वास्तव में WxPython के साथ कोई व्यक्तिगत हिस्सेदारी नहीं है, यह सिर्फ कुछ है जो मैंने लोगों को सुना है (टिंकर के संबंध में)। मुझे किसी भी तरह से परवाह नहीं है। – Harel

5

Tkinter इस तरह के एक साधारण काम के लिए एक उत्कृष्ट विकल्प है। आप लगभग निश्चित रूप से पहले ही इसे स्थापित कर चुके हैं, और Canvas विजेट उल्लेखनीय रूप से शक्तिशाली है। इसमें लाइनों को आकर्षित करने के लिए अंतर्निहित सुविधाएं हैं जिनके अंत में एक तीर है, और घूर्णन बहुत सीधी है।

टिंकर के बारे में "सामान्य ज्ञान" को न दें - यह एक आधुनिक, स्थिर और टूलकिट का उपयोग करने में बेहद आसान है। आप इसके साथ अगली फ़ोटोशॉप या आईमोवी नहीं बना सकते हैं, लेकिन ज्यादातर लोगों के लिए और अधिकांश ऐप्स के लिए यह एक बहुत ही ठोस, व्यावहारिक पसंद है।

import Tkinter as tk 
import math 

class ExampleApp(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.canvas = tk.Canvas(self, width=400, height=400) 
     self.canvas.pack(side="top", fill="both", expand=True) 
     self.canvas.create_line(200,200, 200,200, tags=("line",), arrow="last") 
     self.rotate() 

    def rotate(self, angle=0): 
     '''Animation loop to rotate the line by 10 degrees every 100 ms''' 
     a = math.radians(angle) 
     r = 50 
     x0, y0 = (200,200) 
     x1 = x0 + r*math.cos(a) 
     y1 = y0 + r*math.sin(a) 
     x2 = x0 + -r*math.cos(a) 
     y2 = y0 + -r*math.sin(a) 
     self.canvas.coords("line", x1,y1,x2,y2) 
     self.after(100, lambda angle=angle+10: self.rotate(angle)) 

app = ExampleApp() 
app.mainloop() 
+0

मैं सहमत हूं। मुझे लगता है कि मेरे 'टिंकर' ऐप्स ठीक दिखते हैं और महसूस करते हैं। – mgilson

+0

वह कोड बहुत अच्छा लगता है। मैं कोशिश करूँगा और खुद के लिए देखूँगा। धन्यवाद! – Chippen

1

आप विज़ुअल और/या vpython पर दिख सकता है:

यहां एक त्वरित और गंदे उदाहरण है। http://www.vpython.org/ Vpython सामान्य प्राणियों के लिए 3-डी प्रोग्रामिंग होने का दावा करता है। यह उस दृश्य पर आधारित है जिसका मैंने पहले उपयोग किया है और इसे लेने में आसान पाया गया है।

+0

यह एक अच्छा उम्मीदवार उत्तर की तरह दिखता है। इस उत्तर को और अधिक पूरा करने के लिए किसी एपीआई या कुछ के लिए एक लिंक उपयोगी होगा। – scorpiodawg

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