اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

المساعد  في التعديل على هذا الكود الذي وضيفته البحث في أداة  Treeview من خلال أداة entry

التعديل الذي أحتاج القيام به هو بمجرد كتابة أول حرف من الكلمة المراد البحث عنها من خلال  أداة entry يتم البحث عن النتائج المطابقة وحذف باقي السجلات الغير المطابقة 

الكود الحالي يقوم بتحديد السجل المطابق للبحث فقط والإبقاء على باقي النتائج

self.entry1.bind('<Key>', self.search)

 

    def search(self, Key):
        query =  self.entry1.get()
        selections = []
        for child in self.tree.get_children():
            if query in self.tree.item(child)['values']:
                self.tree.delete()
                print(self.tree.item(child)['values'])
                selections.append(child)
        self.tree.selection_set(selections)

 

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله.

نظرا لأن الشفرة الكاملة للبرنامج (أو الجزء الذي يمكن تجريبه) غير متوفرة في هذه المشاركة، فسأحاول الإجابة لكني لن أستطيع تجريبها عندي من أجل التأكّد.

فكرة استخدام self.tree.delete() لحذف كل السجلّات لا تبدو صحيحة خاصة في ذلك المكان. أعتقد أن هذا الكود سيحذف كل شيء بما في ذلك السجلات التي نبحث عنها.

بدلا من ذلك، توجد طريقة أنظف تستخدم self.tree.detach(child) لنزع السجل من مكانه مع إمكانية حفظه في مكان آخر لكي يتم استرجاعه لاحقا.

باستخدام هذه الطريقة، يمكننا كتابة الكود التالي:

    def search(self, Key):
        query =  self.entry1.get()
        selections = []
        self.detached_items = {}
        for child in self.tree.get_children():
            if query in self.tree.item(child)['values']:
                selections.append(child)
            else:
                parent = self.tree.parent(child)
                self.tree.detach(child)
                self.detached_items[child] = parent
        self.tree.selection_set(selections)

هذه الوظيفة تقوم بالتحديد مثل سابقتها وكذلك ينزع السجلات التي لا تطابق البحث ويخزنها في self.detached_items. لاستعادة السجّلات المنزوعة يمكننا فعل ذلك عن طريق كتابة واستدعاء وظيفة مثل هذه:

    def restore(self):
        for child, parent in self.detached_items.items():
            self.tree.reattach(child, parent, "end")
        self.detached_items = {}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...