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

Treeview - Python Tkinter

Ahmed Ahmed64

السؤال

السلام عليكم

لنفترض أن لدينا DataFrame تحتوي على عمود Name  هذا العمود به الاسم ثلاثي وأردت أن أقوم بالبحث عن اسم معين داخل هذا العمود  و لنفترض أن الاسم أحمد

كيف أستحرج جميع الحقول التي تحتوي على اسم أحمد 

إذا أمكن أيضا أخي أحتاج أن تكون عرض النتيجة داخل أداة  Treeview - Python Tkinter

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك القيام بذلك عن طريقة وضع treeview تحتوي على كل الأسماء التي تقرأها من ال dataset الخاصة بك و من ثم تقوم بتعريف دالة للبحث عن الأسماء المحددة التي تريدها، يمكنك  الإستعانة بهذا الكود و التعديل عليه حسب إحتياجاتك:

import pandas as pd
import tkinter as tk
from tkinter import ttk

# إنشاء DataFrame تجريبي
data = {'Name': ['أحمد محمد علي', 'محمد أحمد علي', 'علي أحمد محمد', 'يوسف أحمد', 'أحمد علي']}
df = pd.DataFrame(data)

# إنشاء نافذة Tkinter
root = tk.Tk()
root.title("بحث في DataFrame")

# إضافة Treeview لعرض النتائج
columns = ['Name']
tree = ttk.Treeview(root, columns=columns, show='headings')

# تحديد عناوين الأعمدة
for col in columns:
    tree.heading(col, text=col)

# تحديد عرض الأعمدة
tree.column('Name', width=200)

# إضافة البيانات إلى Treeview
for index, row in df.iterrows():
    tree.insert('', 'end', values=(row['Name'],))

# إضافة حقل لإدخال اسم البحث
search_var = tk.StringVar()
search_entry = tk.Entry(root, textvariable=search_var, width=20)
search_entry.grid(row=0, column=1, padx=10, pady=10)


tree.grid(row=0, column=0, sticky='nsew')
# دالة للبحث عن الاسم وعرض النتائج في Treeview
def search_name():
    query = search_var.get().strip()
    # حذف النتائج الحالية
    for row in tree.get_children():
        tree.delete(row)
    # إيجاد النتائج المطابقة وإضافتها إلى Treeview
    for index, row in df[df['Name'].str.contains(query)].iterrows():
        tree.insert('', 'end', values=(row['Name'],))

# إضافة زر لتشغيل البحث
search_button = tk.Button(root, text="ابحث", command=search_name)
search_button.grid(row=0, column=2, padx=10, pady=10)

# تشغيل النافذة
root.mainloop()

حاول بين الحين و الآخر كتابة الكود لوحدك و واجه المشكلات التي تكون فيه، هذا سيحفز فيك حل المشكلات البرمجية و يصبح لديك خبرة مع مرور الوقت.

يمكنك أيضا قراءة المقالات الخاصة بالبيثون و واجهات المستخدم من خلال الرابط التالي:

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هل تقصد البحث في الأسماء عن أي اسم يحتوي كلمة "أحمد" سواء بأولها أو وسطها أو آخرها؟

إذا كان كذلك يمكنك استخدام الوظيفة contains

import re
import pandas as pd

names = pd.DataFrame({
    'Name': ['Ahmed Yousof', 'Abdullah Mohammed', 'Ashraf Ali', 'Fatema El Zahraa'],
    'Arabic': [90, 80, 70, 95], 
    'Math': [100, 99, 95, 90]
    })

result = names[names['Name'].str.contains('ahmed')]
print(result)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 19‏/1‏/2024 at 14:08 قال El Sayed El Tohamy:

هل تقصد البحث في الأسماء عن أي اسم يحتوي كلمة "أحمد" سواء بأولها أو وسطها أو آخرها؟

إذا كان كذلك يمكنك استخدام الوظيفة contains

import re
import pandas as pd

names = pd.DataFrame({
    'Name': ['Ahmed Yousof', 'Abdullah Mohammed', 'Ashraf Ali', 'Fatema El Zahraa'],
    'Arabic': [90, 80, 70, 95], 
    'Math': [100, 99, 95, 90]
    })

result = names[names['Name'].str.contains('ahmed')]
print(result)

 

تمام أشكرك أخي هذا ما قصدته

ماذا لو البحث عن الاسم الأول فقط كيف الطريقة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هي سهلة جدًا، يمكن أن أقولها لك، ولكن أريدك البحث عنها بنفسك، لتنمية مهارة التعليم الذاتي،

وإليك إرشاد:

سيتم تغيير الوظيفة contains بوظيفة أخرى.

بالتوفيق والسداد،

تم التعديل في بواسطة El Sayed El Tohamy
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...