در مبحث قبلی از مجموعه درس های GUI در پایتون Button ها را مورد بررسی قرار دادیم و فهمیدیم که Button ها تعدادی صفت دارند، مانند صفت quit که در مبحث قبلی عمل خروج از برنامه را توسط کلیک کاربر بر روی دکمه ایجاد شده انجام می داد.
برخی از صفات مهم این کنترل عبارنتد از:
text. این صفت را در Label نیز مشاهده کردیم (Label = یک متن نوشتاری یا یک عکس را می افزود). در دکمه ها نیز عمل ثبت متن دیداری دکمه ها را بر عهده دارد.
font. فونت مورد استفاده در صفت text را مشخص می کند.
width & height. به ترتیب پهنای دکمه را تنظیم می کنند.
bitmap. تصویری را در زمینه دکمه قرار می دهد.
background & foreground. یا به اختصار bg & fg در کدنویسی رنگ پیش زمینه و پس زمینه را مشخص می کند.
تا به الان یاد گرفتیم که چگونه برنامه نویسی دیداری را برای دکمه ها انجام دهیم (به آن ها رنگ بدهیم و متن آنها را عوض کنیم و موارد دیگر). این بار می خواهیم که برنامه نویسی پنهان یا back-end را برای کنترل های خود انجام بدهیم؛ برای مثال با کلیک کاربر بر روی یک دکمه، یک عمل تعیین شده ای رخ دهد.
در مباحث قبلی از command بصورت زیر استفاده می کردیم. (command: دقیقا دربرگیرنده مفهوم لغتی آن ، «در معنی دستور») :
but = Button(fourm , text="Hi" , command=quit)
در خط کد بالا، یک متغیر از نوع Button با صفات text و command تعیین کردیم و صفتی که به دستور خود دادیم، صفت خروج از برنامه بود (quit) که یک عمل از قبل تعیین شده ای را انجام می داد (دقیقا همانند کتابخانه ها). حال اگر بخواهیم پیشرفته تر از قبل نرم افزار خود را شخصی سازی کنیم، باید چه کاری انجام دهیم؟
یکی از مرسوم ترین روش ها این است که یک تابع بسازیم و کدهای خود را در آن قرار داده و آن تابع را به Button خود متصل کنیم. یعنی اگر بر روی دکمه کلیک شود، آن دستوراتی که در داخل تابع نوشته شده اند اجرا می شوند.
پایتون دارای دو نوع تابع است:
توابع کتابخانه ای: این توابع دستورات مشخص شده ، یا به اختصار از پیش تعیین شده ای را انجام می دهد مانند کتابخانه و یا تابع math که برای محاسبات ریاضی در پایتون به کار می رود و بوسیله دستور import مورد استفاده قرار می گیرد.
توابع تولید شده توسط برنامه نویس: توابعی که ما بنا به نیاز خود می نویسیم و تنها در داخل همان سورس کد قابل استفاده هستند و با دستور def ساخته می شوند.
توابع مورد نیاز ما در این مبحث توابع شخصی سازی شده یا نوع دوم هستند.
برای اینکه ما از این قابلیت منحصربه فرد استفاده کنیم:
from tkinter import * four = Tk() def fun(): but3 = Button(four , text = "Hello" ).pack() but1 = Button(four , text = "Hello" , command = fun).pack() but2 = Button(four , text = "Hello2" , command = quit).pack() four.mainloop()
خط اول: ماژول tkinter را به همراه تمام کتابخانه های آن import کرده ایم.
خط دوم: یک فرم با نام four ساخته ایم (با استفاده از کلاس Tk).
خط سوم: یک تابع نوع دوم ساخته و نام آن را fun قرار داده ایم.
خط چهارم: در این خط که زیرمجموعه ی تابع تعریف شده است، یک Button با نام but3 ساخته ایم.
خط پنجم: یک Button داریم که نقش آن ، اجرای یک تابع است که نام تابع را در مقابل command قرار داده ایم.
خط ششم: یک دکمه ساخته ایم.
خط هفتم: فرم مورد نظر را ، مورد انتظار قرار داده ایم (برای کلیک و...).
توجه: برای اینکه به خطا برنخورید باید ابتدا تابع را تعریف کنید تا سیستم قبل از ایجاد Button ، آن را بشناسد.
اگر سورس کد بالا را اجرا کنید، با کلیک کردن بر روی دکمه اول یک Button دیگر نیز بوسیله تابع مورد نظری که به صفات دکمه اولی داده ایم ساخته می شود. کدها را برای درک بهتر در سیستم خود اجرا کنید.
شما می توانید بوسیله تابع configure ، تغییراتی را بر روی یک هدف مشخص شده انجام بدهید، برای مثال:
from tkinter import * four = Tk() def fun(): but2.configure(text = "Amir") but1 = Button(four , text = "Hello" , command = fun).pack() but2 = Label(four , text = "Hello2" ).pack() four.mainloop()
این کدها نیز مانند مثال بالا ، but1 را به یک تابع هدایت می کنند و تابع configure باعث تغییر متن Label می شود (در but2)
توجه: طبق بررسی زودهنگامی که خودم انجام دادم ، configure در پایتون نسخه 3 کار نمی کند.
با استفاده از این تابع می توانیم برای محیط گرافیکی خود یک سایزی را در نظر بگیریم (مانند 300 در 200).
یک نمونه تنظیم geometry:
four.geometry("200x500")
طبق دستور بالا ما در فرم four رنج را مساوی با 200 در 500 قرار داده ایم.
منبع: سایت Geeks for Geeks
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.