2009-09-06 11 views
9
from Tkinter import * 

app = Tk() 
text_field = Entry(app) 
text_field.pack() 
app.mainloop() 

मैं यह जांचने में सक्षम होना चाहता हूं कि text_field वर्तमान में चयनित या केंद्रित है, ताकि मुझे पता चले कि उपयोगकर्ता जब सामग्री दबाता है तो इसकी सामग्री के साथ कुछ करना है या नहीं।आप कैसे जांचते हैं कि विजेट टिंकर में केंद्रित है या नहीं?

उत्तर

16

यदि आप कुछ ऐसा करना चाहते हैं जब उपयोगकर्ता प्रविष्टि विजेट पर फोकस करता है तो केवल प्रविष्टि विजेट पर बाध्यकारी जोड़ें। अगर वह विजेट फोकस करता है तो यह केवल आग लग जाएगा। उदाहरण के लिए:

>>> from Tkinter import * 
>>> root=Tk() 
>>> e1=Entry(root) 
>>> e1.pack() 
>>> e2=Entry(root) 
>>> e2.pack() 
>>> def handleReturn(event): 
...  print "return: event.widget is",event.widget 
...  print "focus is:", root.focus_get() 
... 
>>> e1.bind("<Return>", handleReturn) 

ध्यान दें कि हैंडलर केवल तभी कॉल किया जाता है जब पहली प्रविष्टि फोकस दबाती है।

यदि आप वास्तव में वैश्विक बाध्यकारी चाहते हैं और यह जानने की आवश्यकता है कि कौन से विजेट पर ध्यान केंद्रित किया गया है, तो रूट ऑब्जेक्ट पर focus_get() विधि का उपयोग करें। निम्नलिखित उदाहरण में बाध्यकारी "।" पर रखा गया है। (मुख्य उच्चस्तरीय) इतना है कि यह कोई बात नहीं क्या ध्यान केंद्रित है आग:

>>> from Tkinter import * 
>>> root=Tk() 
>>> e1=Entry(root) 
>>> e1.pack() 
>>> e2=Entry(root) 
>>> e2.pack() 
>>> def handleReturn(event): 
...  print "return: event.widget is",event.widget 
...  print "focus is:",root.focus_get() 
... 
>>> root.bind("<Return>",handleReturn) 

सूचना दोनों के बीच अंतर: पहले उदाहरण में हैंडलर केवल बुलाया जाएगा जब आप पहली बार प्रवेश विजेट में वापसी दबाएँ। यह जांचने की कोई आवश्यकता नहीं है कि कौन सा विजेट फोकस कर रहा है। दूसरे उदाहरण में हैंडलर को कोई फर्क नहीं पड़ता कि किस विजेट ने फोकस किया है।

दोनों समाधान वास्तव में होने की आवश्यकता के आधार पर अच्छे हैं। यदि आपका मुख्य लक्ष्य केवल कुछ ऐसा करना है जब उपयोगकर्ता किसी विशिष्ट विजेट में वापस लौटता है, तो पूर्व का उपयोग करें। यदि आप ग्लोबल बाध्यकारी चाहते हैं, लेकिन उस बाध्यकारी में कुछ भी अलग-अलग काम करता है जो फोकस करता है या नहीं, तो बाद का उदाहरण करें।

+0

क्या यह बात संभव है लेकिन बिना प्रतीक्षा किए दबाए प्रवेश के लिए प्रवेश करें। उदाहरण के लिए, जब उपयोगकर्ता कुछ टाइप करने के लिए एंट्री का चयन करता है, तो क्या यह जानना संभव है कि यह बात हुई? –

+1

@ MuhamedHuseinbašić: हाँ, यह संभव है। –

+0

यह कैसे करें? : डी मुझे वह कहां मिल सकता है? –

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

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