2011-12-21 15 views
6

के साथ x, y कोऑर्डिनेट्स को कैप्चर करना मैं पीआईएल के साथ उपयोगकर्ता को एक छवि प्रदर्शित करना चाहता हूं और जब उपयोगकर्ता इस छवि पर कहीं भी क्लिक करता है, तो मुझे एक डीफ ऑनमोसडाउन (एक्स, वाई) कहा जाता है। मैं इस समारोह में कुछ अतिरिक्त सामान करूंगा। मैं इसे पीआईएल में कैसे कर सकता हूं?पाइथन पीआईएल

धन्यवाद,

+4

जनहित याचिका सिर्फ एक इमेजिंग पुस्तकालय, आप इसके साथ चित्र बनाने के कर सकते हैं। छवि प्रदर्शित करना और क्लिक ईवेंट कैप्चर करना उपयोगकर्ता इंटरफ़ेस इंजन का काम है। आपके पास यूजर इंटरफेस का राजा क्या है/चाहता है? – Ski

उत्तर

8

जनहित याचिका इसे अकेले नहीं कर देगा - जनहित याचिका कोई उपयोगकर्ता इंटरफ़ेस के साथ एक छवि हेरफेर पुस्तकालय है - यह एक show विधि है, जो एक बाहरी प्रोग्राम है जो छवि प्रदर्शित करता है खोलने करता है, लेकिन करता है पायथन प्रक्रिया के साथ वापस संवाद नहीं।

इसलिए, एक छवि के साथ बातचीत करने के लिए एक उपयोगकर्ता प्राप्त करने में सक्षम होने के लिए, एक अजगर के साथ प्रयोग के लिए समेकित उपकरणकिटें में से एक का उपयोग कर एक जीयूआई कार्यक्रम बनाने की कोई आवश्यकता है - बेहतर ज्ञात लोगों Tkinter, जीटीके और क्यूटी 4 हैं । टिंकर दिलचस्प है क्योंकि यह विंडोज पायथन इंस्टॉलेशन के साथ पूर्व-स्थापित है, और इसलिए उस सिस्टम के उपयोगकर्ताओं के लिए अधिक आसानी से उपलब्ध है। यदि आप अन्य टूलकिट्स पर उपयोग करने का निर्णय लेते हैं तो विंडोज उपयोगकर्ताओं को अपने प्रोग्राम का उपयोग करने में सक्षम होने के लिए gtk या qt पुस्तकालयों को अलग से डाउनलोड और स्थापित करना होगा।

import Tkinter 
from PIL import Image, ImageTk 
from sys import argv 

window = Tkinter.Tk(className="bla") 

image = Image.open(argv[1] if len(argv) >=2 else "bla2.png") 
canvas = Tkinter.Canvas(window, width=image.size[0], height=image.size[1]) 
canvas.pack() 
image_tk = ImageTk.PhotoImage(image) 
canvas.create_image(image.size[0]//2, image.size[1]//2, image=image_tk) 

def callback(event): 
    print "clicked at: ", event.x, event.y 

canvas.bind("<Button-1>", callback) 
Tkinter.mainloop() 
2

यहाँ एक और संबंधित पोस्ट

How to display picture and get mouse click coordinate on it

उबंटू पर स्थापित करने के लिए

sudo apt- है:

यहाँ क्लिक करने योग्य चित्र के साथ एक Tkinter आवेदन की एक minimalist उदाहरण है पाइथन पायथन-टीके निष्क्रिय पाइथन-पीएमडब्ल्यू पायथन-इमेजिंग पायथन-इमेजिंग-टीके

इंस्टॉल करें

फिर यह सब काम करता है।

मैंने @ jsbueno के समाधान और निश्चित एक आयात समस्या का आकार बदल दिया।

import Tkinter 
from PIL import ImageDraw, Image, ImageTk 
import sys 

window = Tkinter.Tk(className="bla") 

image = Image.open(sys.argv[1] if len(sys.argv) >=2 else "bla2.png") 
image = image.resize((1000, 800), Image.ANTIALIAS) 
canvas = Tkinter.Canvas(window, width=image.size[0], height=image.size[1]) 
canvas.pack() 
image_tk = ImageTk.PhotoImage(image) 

canvas.create_image(image.size[0]//2, image.size[1]//2, image=image_tk) 

def callback(event): 
    print "clicked at: ", event.x, event.y 

canvas.bind("<Button-1>", callback) 
Tkinter.mainloop()