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()










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

إرسال تعليق