جعل وسبيثون تكستكترل الرد على كر أو علامة التبويب

StackOverflow https://stackoverflow.com//questions/25091190

سؤال

وأعتقد أن هذا يجب أن يكون السؤال الأساسي جدا ، ولكن لقد غوغلد حتى الموت مع عدم وجود إجابة واضحة ، لذلك هنا يذهب:لدي تكستكترل وأريد تسلسل أساسي جدا من الأحداث:1) يقوم المستخدم بنقل التركيز إلى عنصر التحكم عن طريق الخطاف أو المحتال.2) المستخدم أنواع شيء في تكستكترل.3) يضرب المستخدم العودة أو علامة التبويب.4) عند هذه النقطة ، رمز الاستيلاء على النص في تكستكترل ، يفعل بعض المعالجة البسيطة ، ومن ثم ينتقل التركيز إلى أي عنصر تحكم هو التالي في ترتيب الجدولة.

يمكن لأحد أن يقول لي كيفية القيام بذلك?يبدو الأمر أساسيا جدا بالنسبة لي ، لكن لا يمكنني العثور على الإجابة في أي مكان.آسف إذا فاتني شيء واضح.

هل كانت مفيدة؟

المحلول

لجعل هذا يعمل بشكل صحيح ، ستحتاج إلى التقاط الأحداث الرئيسية والتحقق لمعرفة ما إذا كان المستخدم قد ضغط على مفاتيح الإدخال أو علامة التبويب.كما @سوندار كما سبق ذكره ، للحصول على الجدولة للعمل بشكل صحيح على جميع المنصات ، والحاجيات تحتاج إلى أن تكون الأطفال من لوحة.إليك مثال بسيط إلى حد ما:

import wx

########################################################################
class MyPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        self.text = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER)
        self.text.Bind(wx.EVT_KEY_DOWN, self.onEnter)
        btn = wx.Button(self, label="Do something")
        self.text.SetFocus()

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.text, 0, wx.EXPAND|wx.ALL, 5)
        sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
        self.SetSizer(sizer)

    #----------------------------------------------------------------------
    def onEnter(self, event):
        """"""
        keycode = event.GetKeyCode()
        if keycode == wx.WXK_RETURN or keycode == wx.WXK_NUMPAD_ENTER or keycode == wx.WXK_TAB:
            self.process_text(event=None)
            event.EventObject.Navigate()
        event.Skip()

    #----------------------------------------------------------------------
    def process_text(self, event):
        """
        Do something with the text
        """
        text = self.text.GetValue()
        print text.upper()
        for word in text.split():
            print word

########################################################################
class MyFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="TextCtrl Demo")
        panel = MyPanel(self)
        self.Show()

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()

نحن هنا ربط wx.EVT_KEY_DOWN ويكون ذلك استخراج رمز المفتاح الذي تم الضغط عليه.ثم يتحقق لمعرفة ما إذا كان رمز المفتاح هو مفتاح الإدخال أو علامة التبويب.إذا كان الأمر كذلك ، فإنه يستدعي وظيفة لمعالجة النص ثم يستدعي event.EventObject.Navigate(), ، الأمر الذي سيؤدي إلى كسبيثون لنقل التركيز إلى القطعة التالية في ترتيب علامة التبويب.

قد ترغب في قراءة ما يلي حول هذا الموضوع:

لمزيد من المعلومات حول الأحداث الرئيسية وشار كسبيثون ، انظر ما يلي:

نصائح أخرى

1. بالنسبة للخطوبة للعمل على الإطلاق، يجب أن يكون النافذة أو اللوحة الفردية لك عناصر تحكم / Wigits على جزء من علامة نمطه ما يلي: wxtab_traversal IE؛

giveacodicetagpre.

2.يتم تعيين طلب علامة التبويب حسب الطلب الذي تضيف عناصر تحكم إلى اللوحة أو الإطار.

3) يبدو أن ترتيب tabbing يعتمد أيضا في حاجيات الطلب يتم إنشاؤها.أفترض أن هذا بسبب أرقام معرف القطعة.لا يبدو أن طلب إضافة إلى Sizers / لوحات مساعدتي.

4) إليك ترتيب علامة تبويب Demofor قليلا بمجرد إعداد عناصر التحكم:

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top