Python GUI Programming

إتقان ttk.Combobox في Tkinter: دليل شامل

Spread the love

يوفر عنصر واجهة المستخدم ttk.Combobox في Tkinter طريقة ملائمة لإنشاء قوائم منسدلة في تطبيقات واجهة المستخدم الرسومية الخاصة بك بلغة بايثون. سيساعدك هذا البرنامج التعليمي في استعراض ميزاته ووظائفه الرئيسية، مع توفير أمثلة عملية لمساعدتك في دمج مربعات التحرير المنسدلة في مشاريعك بكفاءة.

جدول المحتويات:

  1. مثال أساسي على مربع التحرير المنسدل
  2. تخصيص المظهر: الخطوط والأنماط
  3. معالجة الأحداث والتفاعل مع المستخدم
  4. تحديث قيم مربع التحرير المنسدل ديناميكيًا
  5. إنشاء مربعات تحرير منسدلة للقراءة فقط

1. مثال أساسي على مربع التحرير المنسدل

لنبدأ بمثال بسيط لتوضيح إنشاء واستخدام ttk.Combobox:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("مثال مربع التحرير المنسدل")

combo = ttk.Combobox(root, values=["الخيار 1", "الخيار 2", "الخيار 3"])
combo.pack(pady=20)
combo.current(0)  # تعيين القيمة الافتراضية إلى "الخيار 1"

root.mainloop()

يقوم هذا الكود بإنشاء نافذة رئيسية، ويضيف مربع تحرير منسدلاً بثلاثة خيارات محددة مسبقًا، ويحدد التحديد الافتراضي إلى “الخيار 1”. تذكر استيراد كل من tkinter و ttk.

2. تخصيص المظهر: الخطوط والأنماط

يمكنك تخصيص مظهر مربع التحرير المنسدل، مثل خطه:


import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont

root = tk.Tk()
root.title("مثال على تصميم مربع التحرير المنسدل")

myFont = tkFont.Font(family="Helvetica", size=12, weight="bold")
combo = ttk.Combobox(root, values=["الخيار أ", "الخيار ب", "الخيار ج"], font=myFont)
combo.pack(pady=20)
combo.current(0)

root.mainloop()

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

3. معالجة الأحداث والتفاعل مع المستخدم

للاستجابة لاختيارات المستخدم، قم بربط الأحداث بمربع التحرير المنسدل. يتم تشغيل حدث <<ComboboxSelected>> عندما يختار المستخدم عنصرًا:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("معالجة أحداث مربع التحرير المنسدل")

def combo_selected(event):
    selected_item = combo.get()
    print(f"العنصر المحدد: {selected_item}")

combo = ttk.Combobox(root, values=["الخيار 1", "الخيار 2", "الخيار 3"])
combo.pack(pady=20)
combo.current(0)
combo.bind("<<ComboboxSelected>>", combo_selected)

root.mainloop()

يقوم هذا الكود بتعريف دالة combo_selected تطبع العنصر المحدد. تربط طريقة bind هذه الدالة بحدث <<ComboboxSelected>>.

4. تحديث قيم مربع التحرير المنسدل ديناميكيًا

يمكنك تحديث خيارات مربع التحرير المنسدل ديناميكيًا أثناء وقت التشغيل:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("مربع تحرير منسدّل ديناميكي")

combo = ttk.Combobox(root)
combo.pack(pady=20)

def update_combo():
    new_values = ["خيار جديد 1", "خيار جديد 2", "خيار جديد 3"]
    combo["values"] = new_values

button = tk.Button(root, text="تحديث مربع التحرير المنسدل", command=update_combo)
button.pack()

root.mainloop()

يؤدي زر إلى تشغيل دالة update_combo، والتي تعدّل سمة values لمربع التحرير المنسدل.

5. إنشاء مربعات تحرير منسدلة للقراءة فقط

لجعل مربع التحرير المنسدل للقراءة فقط (منع إدخال النص مباشرةً)، استخدم خيار state:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("مربع تحرير منسدّل للقراءة فقط")

combo = ttk.Combobox(root, values=["الخيار 1", "الخيار 2", "الخيار 3"], state="readonly")
combo.pack(pady=20)
combo.current(0)

root.mainloop()

يؤدي تعيين state="readonly" إلى تعطيل إدخال النص المباشر، مما يسمح فقط بالتحديد من القائمة المنسدلة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *