Thursday 15 April 2010

python - In Tkinter how to pass a called function as argument? -


& lt; menu_item & gt; .add_command () के साथ मेनूबार के निर्माण के लिए टंकिनटर में हमें त्वरक तर्क के लिए स्ट्रिंग जो एक कमांड के लिए हॉटकी बंधन बनाएगा।

मैंने एक विधि बनाई है, जो यह जांच रहा है कि उपयोगकर्ता का प्लेटफॉर्म मैक या अन्य है, और यदि यह है , फिर अन्य कुंजी के साथ संयुक्त कमांड कुंजी स्ट्रिंग देता है।

लेकिन यह काम नहीं करता - & gt; मेनू का निर्माण हो रहा है, अगर मैं उस मेनू-वस्तु पर क्लिक करता हूं जो वह काम कर रहा है, लेकिन गर्म-कुंजियों के साथ काम नहीं कर रहा है हालांकि मैं मेनू में â ???? + N देख सकता हूँ

मेरा पहला विचार यह है कि स्वयं। Hot_key () विधि को एक तर्क के रूप में पारित नहीं किया जाता है ..

  आयात सिस्टम आयात करें टिनकिनर क्लास ऐप (ऑब्जेक्ट): def __init __ (स्वयं): self.gui = Tkinter Tk () self.gui.minsize (चौड़ाई = 640, ऊंचाई = 320) मेनू = टंकिनर.मेनू (self.gui) filemenu = Tkinter.Menu (मेनू, टायरऑफ = 0) filemenu.add_command (लेबल = 'नया', कमांड = Self.New, त्वरक = self.hot_key ('n')) menu.add_cascade (label = 'file', menu = filemenu) self.gui.config (menu = menu) self.text = Tkinter.Text (स्वयं। GUI) self.text.pack (विस्तारित = टीकेनेटर। YES, fill = Tkinter.BOTH) def hot_key (स्वयं, * कुंजी): super_key = 'कमांड' अगर sys.platform == 'डार्विन' और 'नियंत्रण' वापसी '{ सुपर} + {चाबियाँ} '। प्रारूप (सुपर = सुपर_की, चाबियाँ =' + '। शामिल हों (चाबियाँ) डीईएफ़ नया (स्वयं): प्रिंट "मैं काम कर रहा हूं!" ऐप = ऐप () App.gui.mainloop ()    

पेज के अनुसार, < / P>

"एक्सेलेरेटर" विकल्प का उपयोग मेनू त्वरक को इंगित करने के लिए किया जाता है जिसे इस मेनू से जोड़ा जाना चाहिए। यह वास्तव में त्वरक नहीं बना है, लेकिन केवल यह दिखाता है कि यह मेनू आइटम के बगल में क्या है आपको अब भी त्वरक के लिए बाध्यकारी बनाने की आवश्यकता है।

तो आपका त्वरक कीवर्ड तर्क डिजाइन के रूप में काम कर रहा है - आपके मेनू में कमांड-एन का प्रतीक दिखाई देता है ।

के रूप में एक टिप्पणी में mgilson सुझाव देता है, आप वास्तव में कुछ करने के लिए कुंजीपटल संयोजन प्राप्त करने के लिए bind_all का उपयोग कर सकते हैं।

  self.gui Bind_all ("& lt; command-n & gt;", लैम्ब्डा इवेंट: self.New ())    

No comments:

Post a Comment