2013-08-01 7 views
13

tkinter Canvas पर एक सर्कल ड्राइंग आमतौर पर create_oval विधि द्वारा किया जाता है। हालांकि, बाउंडिंग बॉक्स की आपूर्ति अक्सर एक सर्कल ड्राइंग के बारे में सोचने के लिए एक भ्रमित तरीका है। इसके लिए शॉर्टकट के साथ आना विशेष रूप से मुश्किल नहीं है, लेकिन मैं किसी और को ऐसा कुछ नहीं कर सका, इसलिए मैं इसे उम्मीद में पोस्ट करूंगा कि किसी और को यह उपयोगी लगे।टिंकर (पायथन) में सर्कल ड्रा

उत्तर

28

यहां एक चाल है जिसे "बंदर पैचिंग" कहा जाता है, जहां हम वास्तव में Tkinter कक्षा Canvas पर सदस्य जोड़ते हैं। नीचे एक पूर्ण-कार्यरत कार्यक्रम (पायथन 2.7) है, जिसमें से तीसरा अनुच्छेद ब्याज का है। इसे अपने कोड में जोड़ें और आप tk.Canvas.create_circle(x, y, r, options...) का इलाज कर सकते हैं क्योंकि आप एक बिल्टिन विधि करेंगे, जहां विकल्प create_oval के समान हैं। हम create_arc (चौथा पैराग्राफ) के लिए कुछ ऐसा करते हैं, और extent के बजाय end कोण निर्दिष्ट करने का विकल्प दें।

import Tkinter as tk 

root = tk.Tk() 
canvas = tk.Canvas(root, width=200, height=200, borderwidth=0, highlightthickness=0, bg="black") 
canvas.grid() 

def _create_circle(self, x, y, r, **kwargs): 
    return self.create_oval(x-r, y-r, x+r, y+r, **kwargs) 
tk.Canvas.create_circle = _create_circle 

def _create_circle_arc(self, x, y, r, **kwargs): 
    if "start" in kwargs and "end" in kwargs: 
     kwargs["extent"] = kwargs["end"] - kwargs["start"] 
     del kwargs["end"] 
    return self.create_arc(x-r, y-r, x+r, y+r, **kwargs) 
tk.Canvas.create_circle_arc = _create_circle_arc 

canvas.create_circle(100, 120, 50, fill="blue", outline="#DDD", width=4) 
canvas.create_circle_arc(100, 120, 48, fill="green", outline="", start=45, end=140) 
canvas.create_circle_arc(100, 120, 48, fill="green", outline="", start=275, end=305) 
canvas.create_circle_arc(100, 120, 45, style="arc", outline="white", width=6, start=270-25, end=270+25) 
canvas.create_circle(150, 40, 20, fill="#BBB", outline="") 

root.wm_title("Circles and Arcs") 
root.mainloop() 

परिणाम:

result of code

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