سؤال

لدي مثال من ttk.entry. المستخدم ينقر عليه. لدي الحدث ملزمة. اعتمادًا على بعض الحالة ، أريد إما أن يظهر مؤشر الإدخال ويسمح بالكتابة أو أريد أن أتجاهل النقر وليس لظهور مؤشر الإدخال في ttk.entry. أنا لا تريد أن تستخدم الدول القراءة أو المعوقة.

معالجة التركيز لم يؤثر.

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

المحلول 2

بعد صيد وثائق TTK ، هذا يفعل الحيلة:

    ttk.Style().map("TEntry",
                    foreground=[('disabled', 'black')],
                    fieldbackground=[('disabled','white')]
                    )
    widget['state'] = 'disabled'

نصائح أخرى

هنا فئة تفعل ما تطلبه.

class MyEntry(Entry):

    def disable(self):
        self.__old_insertontime = self.cget('insertontime')
        self.config(insertontime=0)
        self.bind('<Key>', lambda e: 'break')

    def enable(self):
        self.unbind('<Key>')
        if self.cget('insertontime') == 0:
            self.config(insertontime=self.__old_insertontime)

ومع ذلك ، نظرًا لأن اهتمامك الحقيقي هو أنك لا تريد إدخالًا معاقًا لتبدو معاقًا ، فما عليك سوى تعيين ألوان disabledbackground و disabledforground لمطابقة ألوان background و forground. إذا كنت بحاجة إلى ذلك في فصل ما ، فافعل ذلك مثل هذا:

class MyEntry(Entry):
    def __init__(self, *args, **kwds):
        Entry.__init__(self, *args, **kwds)
        self.config(disabledbackground=self.cget('background'))
        self.config(disabledforeground=self.cget('foreground'))

واستخدمها مثل هذا:

e = MyEntry(root)
e.config(state=DISABLED) # or state=NORMAL

ملحوظة. كن حذرا عند إعادة اختراع اتفاقيات واجهة المستخدم الرسومية. إن وجود شيء يبدو مُمكّنًا من ACT معاقًا يمكن أن يكون مربكًا للمستخدمين. لذلك لا تغير هذا إلا إذا كان لديك سبب وجيه.

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