Tkinter Button

 

Tkinter Button


مقدمة إلى أداة زر Tkinter

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

يمكن للأزرار عرض النص بخط واحد. ومع ذلك ، يمكن أن يمتد النص على عدة أسطر. علاوة على ذلك ، يمكنك جعل أحد الأحرف تسطيرًا لتمييز اختصار لوحة المفاتيح.

لاستدعاء وظيفة أو طريقة من فئة تلقائيًا عند النقر فوق الزر ، يمكنك تعيين commandخيارها للوظيفة أو الطريقة. يسمى هذا الأمر بالربط في Tkinter .

لإنشاء زر ، يمكنك استخدام ttk.Buttonالمُنشئ على النحو التالي:


button = ttk.Button(container, **option)

الزر له العديد من الخيارات. ومع ذلك ، فإن النماذج النموذجية هي كما يلي:

button = ttk.Button(container, text, command)


في بناء الجملة هذا:

  • هو المكون containerالرئيسي الذي تضع فيه الزر.

  • هي تسمية textالزر.

  • تحدد وظيفة commandرد الاتصال التي سيتم استدعاؤها تلقائيًا عند النقر فوق الزر.

رد نداء الأمر

يربط commandالخيار إجراء الزر بوظيفة أو طريقة لفئة. عند النقر فوق الزر أو الضغط عليه ، فإنه يقوم تلقائيًا باستدعاء وظيفة رد الاتصال.

لتعيين رد نداء commandللخيار ، يمكنك استخدام تعبير lambda:

def callback():

# do something



ttk.Button(

root,

text="Demo Button",

command=callback

)


إذا كانت الوظيفة تحتوي على تعبير واحد ، فإنك تستخدم تعبير لامبا:

ttk.Button(

root,

text="Demo Button",

command=lambda_expression

)

حالات الزر

الحالة الافتراضية للزر هي normal. في normalالحالة ، سيستجيب الزر لأحداث الماوس وضغطات لوحة المفاتيح عن طريق استدعاء وظيفة رد الاتصال المعينة لخيار الأمر الخاص به.

يمكن أن يكون للزر disabledالحالة أيضًا. في disabledالحالة ، يكون الزر غير نشط ولا يستجيب لأحداث الماوس وضغطات لوحة المفاتيح.

للتحكم في حالة الزر ، يمكنك استخدام state()الطريقة:

button.state(['disabled'])


button.state(['!disabled'])


أمثلة زر Tkinter

لنأخذ بعض الأمثلة على استخدام أدوات الأزرار.

1) مثال زر بسيط Tkinter

يوضح البرنامج التالي كيفية عرض Exitزر. عند النقر فوقه ، يتم إنهاء البرنامج.



import tkinter as tk

from tkinter import ttk


root = tk.Tk()

root.geometry('300x200')

root.resizable(False, False)

root.title('Button Demo')


exit_button = ttk.Button(

    root,

    text='Exit',

    command=lambda: root.quit()

)


exit_button.pack(

    ipadx=5,

    ipady=5,

    expand=True

)


root.mainloop()


كيف تعمل.

ما يلي يُنشئ Exitالزر:

exit_button = ttk.Button(
    root,
    text='Exit',
    command=lambda: root.quit()
)

يتم تعيين أمر الزر لتعبير lambda الذي يغلق نافذة الجذر.

2) مثال زر تكينتر الصورة

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

فقط انقر بزر الماوس الأيمن واحفظه في مجلد يمكن الوصول إليه من البرنامج التالي ، على سبيل المثال ، assetsالمجلد:

import tkinter as tk

from tkinter import ttk

from tkinter.messagebox import showinfo


root = tk.Tk()

root.geometry('300x200')

root.resizable(False, False)

root.title('Image Button Demo')


def download_clicked():

    showinfo(

        title='Information',

        message='Download button clicked!'

    )

download_icon = tk.PhotoImage(file='./assets/download.png')

download_button = ttk.Button(

    root,

    image=download_icon,

    command=download_clicked

)

download_button.pack(

    ipadx=5,

    ipady=5,

    expand=True

)

root.mainloop()



كيف تعمل.

  • أولاً ، قم بإنشاء مثيل جديد tk.PhotoImageللفئة التي تشير إلى ملف الصورة './assets/download.png'.

  • ثانيًا ، قم بإنشاء ttk.Buttonخيار الصورة الذي تم تعيينه للصورة.

  • ثالثًا ، قم بتعيين وظيفة commandللخيار. عند النقر فوق الزر ، سوف يقوم باستدعاء download_clickedالوظيفة التي تعرض مربع رسالة.

3) عرض زر الصورة

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

يوضح ما يلي كيفية عرض كل من النص والصورة على زر:

import tkinter as tk

from tkinter import ttk

from tkinter.messagebox import showinfo


root = tk.Tk()

root.geometry('300x200')

root.resizable(False, False)

root.title('Image Button Demo')


def download_clicked():

showinfo(

title='Information',

message='Download button clicked!'

)



download_icon = tk.PhotoImage(file='./assets/download.png')


download_button = ttk.Button(

root,

image=download_icon,

text='Download',

compound=tk.LEFT,

command=download_clicked

)


download_button.pack(

ipadx=5,

ipady=5,

expand=True

)

root.mainloop()










ليست هناك تعليقات:

إرسال تعليق