2010-09-25 9 views
9

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

यदि ट्रीव्यू आइटम बटन थे, तो मैं उपयुक्त फ़ंक्शन में command सेट करने में सक्षम हूं। लेकिन मुझे ट्रीव्यू आइटम्स के लिए "on_click" व्यवहार बनाने का कोई तरीका ढूंढने में परेशानी हो रही है।

क्या ट्रीव्यू विकल्प, विधि, आदि, मुझे विशेष वस्तुओं को कमांड करने और उस आदेश को "on_click" निष्पादित करने में सक्षम बनाता है?

उत्तर

16

यदि उपयोगकर्ता डबल-क्लिक करते समय कुछ करना चाहते हैं, तो "<Double-1>" पर बाध्यकारी जोड़ें। चूंकि एक क्लिक क्लिक को सेट करता है, इसलिए आपके कॉलबैक में आप यह पता लगाने के लिए विजेट से पूछ सकते हैं कि क्या चुना गया है। उदाहरण के लिए:

import tkinter as tk 
from tkinter import ttk 

class App: 
    def __init__(self): 
     self.root = tk.Tk() 
     self.tree = ttk.Treeview() 
     self.tree.pack() 
     for i in range(10): 
      self.tree.insert("", "end", text="Item %s" % i) 
     self.tree.bind("<Double-1>", self.OnDoubleClick) 
     self.root.mainloop() 

    def OnDoubleClick(self, event): 
     item = self.tree.selection()[0] 
     print("you clicked on", self.tree.item(item,"text")) 

if __name__ == "__main__": 
    app = App() 
11

पिछले समाधान में विफल रहता है जब एक से अधिक तत्वों का चयन किया जाता है और उपयोगकर्ता SHIFT+CLICK (कम से कम एक मैक पर) का उपयोग करता है।

import tkinter as tk 
import tkinter.ttk as ttk 

class App: 
    def __init__(self): 
     self.root = tk.Tk() 
     self.tree = ttk.Treeview() 
     self.tree.pack() 
     for i in range(10): 
      self.tree.insert("", "end", text="Item %s" % i) 
     self.tree.bind("<Double-1>", self.OnDoubleClick) 
     self.root.mainloop() 

    def OnDoubleClick(self, event): 
     item = self.tree.identify('item',event.x,event.y) 
     print("you clicked on", self.tree.item(item,"text")) 

if __name__ == "__main__": 
    app = App() 
:

यहाँ एक बेहतर समाधान है

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