2010-09-24 14 views
14

मैं एक ऐसे अनुप्रयोग को विकसित कर रहा हूं जिसमें कई पैन शामिल हैं। देखें screenshot:WxPython में फोकस-निम्न-माउस?

screenshot

  • छोड़ दिया सेटिंग्स फलक एक wx.ScrolledPanel कि wx.Panels के एक नंबर शामिल हैं।
  • शीर्ष ईवेंट फलक wx.grid.Grid है।
  • नीचे डेटा फलक wx.Panel है जिसमें wx.grid.Grid है।
  • मध्य साजिश फलक wx.Panel है जिसमें enthought chaco साजिश है।
  • दाएं डिटेक्टर फलक wx.Panel है।

मैं फोकस लागू करने के लिए चाहते हैं माउस इस प्रकार है, ताकि जब मैं भूखंड पर मेरे माउस ले जाते हैं मैं तुरंत में या भूखंड पर पहले क्लिक किए बिना मेरी स्क्रॉल व्हील का उपयोग कर इसे फोकस देने के लिए बाहर ज़ूम कर सकते हैं।

इसी तरह जब मैं चला गया सेटिंग्स पर मेरे माउस ले जाते हैं, शीर्ष घटनाओं या नीचे डेटा शीशे मैं तुरंत खिड़की पर पहले क्लिक किए बिना स्क्रॉल व्हील का उपयोग कर खिड़की स्क्रॉल करने के लिए सक्षम होने के लिए चाहते हैं ।

def focusFollowsMouse(window): 
    window.Bind(wx.EVT_ENTER_WINDOW, lambda event: window.SetFocus()) 

मैं केवल चार शीर्ष स्तर के शीशे पर इस समारोह लागू करना चाहते हैं: साजिश, सेटिंग्स, घटनाओं और डेटा

वर्तमान में मैं एक समारोह में परिभाषित किया।

हालांकि मुझे यह कार्य करने के लिए प्रत्येक उप-पैनल या प्रत्येक शीर्ष-स्तर के पैन में नियंत्रण के लिए इस फ़ंक्शन को कॉल करने की आवश्यकता है। उदाहरण के लिए मुझे मापन सेटिंग्स, विश्लेषण पैरामीटर्स, सेटिंग्स को आदि पैनलों पर व्यक्तिगत रूप से इस फ़ंक्शन को लागू करने की आवश्यकता है।

सबसे अधिक संभावना EVT_ENTER_WINDOW घटना पैरेंट विंडोज़ के लिए प्रचारित नहीं है।

क्या प्रत्येक उप-पैनल या नियंत्रण में focusFollowsMouse लागू किए बिना इसे काम करने का कोई तरीका है?

धन्यवाद

+4

मुझे अपने खिड़की के माहौल के लिए फोकस-ए-माउस पसंद है, लेकिन पारंपरिक विजेट सेट का उपयोग करके एप्लिकेशन के भीतर ऐसा होता है अप्रत्याशित और काउंटर-सहज ज्ञान युक्त। – llasram

+0

मैं आम तौर पर सहमत हूं, हालांकि इस एप्लिकेशन में उपयोगकर्ता को अक्सर सेटिंग पैनल और साजिश के बीच स्विच करने की आवश्यकता होती है। मुझे ज़ूम करने में सक्षम होने से पहले साजिश पर लगातार क्लिक करने के लिए थोड़ा परेशान लगता है। नोट हालांकि मैंने अभी तक कोई उपयोगिता परीक्षण नहीं किया है। तो यह सिर्फ मामला हो सकता है कि मैं गलत हूँ। –

+2

यह विंडोज़ व्यवहार है - यह काम करता है जैसा कि आप जीटीके के तहत उम्मीद करते हैं। व्यक्तिगत रूप से, मैं आपके ऐप को अन्य विंडोज अनुप्रयोगों के साथ स्थिरता के लिए छोड़ दूंगा, और विज़माउस इंस्टॉल करूँगा: http://antibody-software.com/web/software/software/wizmouse-makes-your-mouse-wheel-work -ऑन-द-विंडो-अंडर-द-माउस/ –

उत्तर

1

यह विंडोज के व्यवहार है - यह काम करता है के रूप में आप जीटीके के तहत की उम्मीद है।व्यक्तिगत रूप से, मैं आपके ऐप को अन्य विंडोज अनुप्रयोगों के साथ स्थिरता के लिए छोड़ दूंगा, और WizMouse