Tkinter عبارة عن مجموعة أدوات لواجهة المستخدم الرسومية (GUI) يجب عليك تجربتها إذا كنت ترغب في استكشاف قوة Python في إنشاء تطبيقات سطح المكتب.

هنا ، نلقي نظرة على أساسيات وحدة Tkinter GUI.

إعداد Tkinter

عادة ، لا تحتاج إلى تثبيت tkinter بشكل منفصل إذا قمت بتثبيت إصدار أحدث من Python ، بدءًا من Python 3. قد لا تعمل المكتبة مع إصدارات Python القديمة. هذه مشكلة شائعة لمستخدمي Mac و Linux ، حيث تأتي أنظمة التشغيل هذه عادةً مع إصدارات أقدم من Python افتراضيًا.

بشكل عام ، لاستخدام ملف tkinter الوحدة النمطية ، تأكد من تنزيل وتثبيت أحدث إصدار متوافق من Python على جهاز الكمبيوتر الخاص بك من المسؤول python.org موقع الكتروني.

إذا كنت تستخدم جهاز Mac ، فيمكنك بدلاً من ذلك تنزيل أحدث إصدار من ActiveTcl ، a tkinter مترجم من ActiveState.

كيفية استخدام Tkinter

يعتمد Tkinter على مدمج المعارف التقليدية صف دراسي. وتختتم جميع الأحداث داخل واجهة المستخدم الرسومية بتنسيق mainloop. وهكذا ، فإن mainloop غلاف يجعل الخاص بك tkinter التعليمات البرمجية القابلة للتنفيذ.

لتبدأ مع tkinter:

من tkinter استيراد Tk
Tk (). mainloop ()
instagram viewer

تشغيل الكود أعلاه يدور على ملف tkinter الإطار.

ومع ذلك ، فإن ميزات التخصيص الخاصة بـ Tkinter موجودة في عناصر واجهة المستخدم المدمجة.

لاستخدام هذه الأدوات ، يمكنك استيرادها من tkinter بتعويض من tkinter استيراد Tk مع:

من استيراد tkinter *
ر = تك ()
t.mainloop ()

يمكنك أيضًا ضبط حجم النافذة بامتداد الهندسة وظيفة ثم حدد عنوانًا باستخدام لقب القطعة من tkinter:

ر = تك ()
t.geometry ("600x600")
t.title ("Tk Tutorial")
t.mainloop ()

يتيح لك Tkinter كتابة نصوص عادية مباشرة إلى واجهة المستخدم الرسومية باستخدام ملف ملصق القطعة:

ر = تك ()
التسمية (t ، text = "MUO Tkinter التعليمي"). الشبكة ()
t.mainloop ()

ال شبكة() طريقة ، ومع ذلك ، هو بديل علية() طريقة. يقوم بإلصاق أدواتك بواجهة المستخدم الرسومية ، مما يجعلها مرئية.

يمكنك أيضًا تحديد خط خاص بك ملصق نص:

ر = تك ()
التسمية (t ، text = "MUO Tkinter التعليمي" ، الخط = (60)). الشبكة ()
t.mainloop ()

الأزرار هي بعض الأدوات الأكثر استخدامًا في ملفات tkinter. ويمكنك إضافة هذه الأزرار القابلة للنقر إلى واجهة المستخدم الرسومية باستخدام أدوات الأزرار المدمجة المتنوعة.

إليك كيفية إضافة زر أساسي إلى واجهة المستخدم الرسومية باستخدام ملف زر القطعة:

ر = تك ()
زر (t، text = "Clickable"، bg = "black"، fg = "white"). grid ()
t.mainloop ()

ال bg و fg تصف الكلمات الرئيسية لون خلفية الزر ولون النص بداخله على التوالي.

يمكنك أيضًا ضبط بُعد الزر من خلال تضمين ملف ارتفاع و العرض حدود:

ر = تك ()
زر (t ، text = "Clickable" ، bg = "black" ، fg = "white" ، height = "2" ، width = "10"). grid ()
t.mainloop ()

إليك ناتج ذلك:

وإذا كنت تريد جعل الزر أكثر جاذبية من الناحية المرئية ، فيمكنك تضمين ملف تضاريس الكلمة الأساسية ثم اضبط عرض حدودها:

ر = تك ()
زر (t ، نص = "قابل للنقر" ، bg = "أزرق" ، fg = "أبيض" ،
الارتفاع = 2 ، العرض = 10 ، الإغاثة = الارتفاع ، عرض الحدود = 6). الشبكة ()
t.mainloop ()

وهذا يبدو كالتالي:

يستبدل رفع مع مسطحة لنرى كيف يتحقق ذلك.

يمكنك إضافة أي عدد تريده من الأزرار. لكن عليك توخي الحذر لتجنب تداخل المحتوى.

لتجنب التداخل ، يمكنك تحديد موضع الصف والعمود لكل زر:

ر = تك ()
الزر (t ، text = 1 ، bg = "black" ، fg = "white"). الشبكة (الصف = 1 ، العمود = 1)
الزر (t ، text = 2 ، bg = "black" ، fg = "white"). الشبكة (الصف = 2 ، العمود = 1)
الزر (t ، text = 3 ، bg = "black" ، fg = "white"). الشبكة (الصف = 3 ، العمود = 1)
الزر (t ، text = 4 ، bg = "black" ، fg = "white"). الشبكة (الصف = 4 ، العمود = 1)
t.mainloop ()

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

الكود أدناه ، على سبيل المثال ، يضاعف قيمة كل زر في 6 عند النقر فوقه. ويستند إلى وظيفة محددة مسبقًا:

زر def (r):
ص = 6 * ص
التسمية (t ، النص = r ، الخط = (60)). الشبكة (الصف = 5 ، العمود = 2)
ر = تك ()
زر (t ، نص = 1 ، bg = "أسود" ، fg = "أبيض" ، عرض = 10 ، ارتفاع = 2 ،
الأمر = lambda: buttonpress (1)). الشبكة (الصف = 1 ، العمود = 1 ، pady = 6)
زر (t ، نص = 2 ، bg = "أسود" ، fg = "أبيض" ، عرض = 10 ،
الأمر = lambda: buttonpress (2)). الشبكة (الصف = 2 ، العمود = 1 ، pady = 6)
زر (t ، نص = 3 ، bg = "أسود" ، fg = "أبيض" ، عرض = 10 ،
الأمر = lambda: buttonpress (3)). الشبكة (الصف = 3 ، العمود = 1 ، pady = 6)
زر (t ، نص = 4 ، bg = "أسود" ، fg = "أبيض" ، عرض = 10 ،
الأمر = lambda: buttonpress (4)). الشبكة (الصف = 4 ، العمود = 1 ، pady = 6)
t.mainloop ()

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

وإذا كنت قلقًا بشأن بادي الكلمة الرئيسية ، فهي تفصل بوضوح كل زر عبر الصف. استبدال هذا بـ بادكس يفصل الأزرار عبر العمود. ويمكنك استخدام كلتا الكلمتين الرئيسيتين في وقت واحد لفصل الأزرار عبر كلا المحورين حسب رغبتك.

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

ولكن يمكنك استخدم حلقة for لتجنب هذا التكرار.

إذن ، هذا إصدار أقصر وأفضل من الكود أعلاه:

زر def (r):
ص = 6 * ص
التسمية (t ، النص = r ، الخط = (60)). الشبكة (الصف = 5 ، العمود = 2)
ر = تك ()
أ = [1 ، 4 ، 6 ، 7]
بالنسبة لي في:
j = lambda y = i: ضغط الزر (y)
زر (t ، text = i ، bg = "black" ، fg = "white" ، العرض = 10 ، الارتفاع = 2 ،
الأمر = j) .grid (الصف = i ، العمود = 1 ، pady = 6)
t.mainloop ()

أزرار القائمة والتحقق من الأزرار

دعنا نستكشف قوة ل حلقة لإضافة أزرار القائمة إلى واجهة المستخدم الرسومية:

من استيراد tkinter *
ر = تك ()
أزرار = ["الملفات" ، "لوحة التحكم" ، "القائمة" ، "الإعدادات" ، "المساعدة"]
م = 0
لأني في النطاق (لين (أزرار)):
# احصل على كل نص في مجموعة الأزرار باستخدام فهرس القائمة كلما زاد م.
# ثم دع العمود يزيد بمقدار 1 خلال طول المصفوفة:

Menubutton (t، text = أزرار [m]، bg = "blue"، fg = "white"). الشبكة (الصف = 5 ، العمود = i)
م + = 1
t.mainloop ()

تعد إضافة أزرار التحقق إلى واجهة المستخدم الرسومية أمرًا سهلاً أيضًا:

ر = تك ()
Checkbutton (t، text = "Select option"). grid ()
t.mainloop ()

لا تتردد في مضاعفة زر الاختيار هذا باستخدام ملف ل حلقة ، كما فعلنا سابقًا.

ال لائحة الطعام يتيح لك عنصر واجهة المستخدم تصميم قوائم منسدلة قابلة للنقر بتنسيق tkinter.

كما حدد سابقا، tkinter يقدم العديد من خيارات القطعة. وستستخدم بعضها أثناء تصميم القائمة المنسدلة.

فيما يلي بعض خيارات الأدوات الشائعة التي ستظهر لك أثناء إنشاء قائمة منسدلة:

  • add_cascade: يعرض تسمية القائمة ويلصقها حيث تنتمي.
  • add_separator: يقوم بترسيم القوائم الفرعية وتجميعها في قوائم فرعية علوية وسفلية.
  • add_command: هذا هو المكان الذي تقوم فيه بتسمية القائمة الفرعية الخاصة بك. في النهاية ، يقبل وسيطة الأمر حيث يمكنك تحديد معالج الحدث.

إليك مثال قائمة منسدلة يستخدم هذه الخيارات الثلاثة:

من استيراد tkinter *
ر = تك ()
fileOptions = ["جديد" ، "فتح" ، "حفظ" ، "حفظ باسم"]
fileOptionsAfterseparator = ["استيراد" ، "تصدير" ، "خروج"]
viewOptions = ["التحويل" ، "التحرير" ، "إنشاء"]
menuBar = القائمة (t)
ملف = القائمة (شريط القائمة ، قطع = 0)
لأني في ملف الخيارات:
file.add_command (التسمية = i ، الأمر = لا شيء)
file.add_separator ()
لأني في fileOptionsAfterseparator:
file.add_command (التسمية = i ، الأمر = لا شيء)
menuBar.add_cascade (التسمية = "ملف" ، القائمة = ملف)
عرض = القائمة (شريط القائمة ، tearoff = 0)
بالنسبة لي في العرض الخيارات:
View.add_command (التسمية = i ، الأمر = لا شيء)
menuBar.add_cascade (التسمية = "عرض" ، القائمة = عرض)
t.config (القائمة = شريط القائمة)
t.mainloop ()

انظر كيف يبدو ذلك:

قائمة خيارات Tkinter

ان الخيارات، على عكس لائحة الطعام القائمة المنسدلة ، تحول تسميتها إلى خيار محدد.

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

متعلق ب: أفكار مشروع بايثون مناسبة للمبتدئين

إليك كيفية إنشاء قائمة خيارات بتنسيق tkinter:

ر = تك ()
Omenu = StringVar () # اضبط نوع متغير الخيارات
Omenu.set ("MUO") # حدد قيمة افتراضية لرمز القائمة
OptionMenu (t، Omenu، "MUO"، "Amazon"، "Tutorial"). grid ()
t.mainloop ()

أنشئ تطبيق سطح مكتب قابل لإعادة الاستخدام باستخدام Tkinter

يقدم Tkinter مجموعة من الميزات التي تساعدك على إنشاء تطبيقات سطح مكتب تفاعلية بواجهة المستخدم الرسومية. على الرغم من أنه قد لا يحتوي على العديد من ميزات التجميل المرنة مثل بعض وحدات Python GUI الأخرى ، إلا أنها لا تزال أداة مفيدة تستحق الاستكشاف. وبينما تُظهر الأمثلة هنا فقط بعض المفاهيم الأساسية ، tkinter يقدم المزيد من الميزات المتقدمة التي يمكنك تجربتها.

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

بريد إلكتروني
واجهة المستخدم الرسومية؟ ما هي واجهة المستخدم الرسومية؟

هل تستخدم واجهة المستخدم الرسومية؟ هناك احتمالات لأنك تستخدمها كل يوم.

اقرأ التالي

مواضيع ذات صلة
  • برمجة
  • بايثون
عن المؤلف
إيدوو أوميسولا (88 المقالات المنشورة)

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

المزيد من Idowu Omisola

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك