Menu
نوار منو (Menu)، در اکثر برنامه به چشم میخورد. این نوار، شامل دستورات مختلفی است که، کاربر از آنها استفاده میکند:
در tkinter با استفاده از کنترل Menu میتوان یک منو به برنامه اضافه کرد. نحوه ایجاد منو به صورت زیر است:
Menu ( master, option, ... )
master، بیانگر پنجره والدی است که این دکمه به آن تعلق خواهد داشت و options، تنظیمات پرکاربرد برای Menu میباشند که میتوانند به صورت زوجهای کلید/مقدار که با ویرگول از هم جدا میشوند، مورد استفاده قرار گیرند. در جدول زیر لیست این تنظیمات آمده است:
تنظیمات | شرح |
activebackground | رنگ پس زمینه زمانی که نشانگر ماوس بر روی یک گزینه قرار میگیرد. |
activeborderwidth | پهنای خط حاشیه گزینهای که زیر نشانگر ماوس قرار دارد. پیش فرض 1 پیکسل است. |
activeforeground | رنگ متن زمانی که نشانگر ماوس بر روی آن گزینه قرار میگیرد. |
bd | پهنای خط حاشیه گزینههای منو در حالت عادی. مقدار پیش فرض 1 است. |
bg | رنگ پس زمینه گزینههایی که ماوس بر روی آنها قرار ندارد. |
cursor | نشانگر ماوس زمانی که بر روی گزینهها قرار میگیرد. تنها برای منوهای جداشده اعمال میشود. |
disabledforeground | رنگ متن آیتمهایی که در وضعیت DISABLED قرار دارند. |
fg | رنگ متن گزینههایی که ماوس بر روی آنها نیست. |
font | فونت متن گزینههای متنی |
postcommand | میتوانید یک تابع را به این گزینه نسبت دهید. هر زمان این منو فعال شود، تابع مورد نظر فراخوانی میگردد. |
relief | افکت سه بعدی پیش فرض برای منو RAISED است. |
image | برای نمایش یک تصویر بر روی menubutton |
selectcolor | رنگی که checkbutton و radiobutton در زمان انتخاب شدن به خود میگیرند را مشخص میکند. |
tearoff | به طور معمول منوها میتوانند جدا شوند. اولین گزینه در لیست هر منو (در موقعیت صفر) گزینه tear-off قرار میگیرد. گزینههای بعدی در موقعیت 1 به بعد قرار میگیرند. اگر شما tearoff=0 قرار دهید، منو دارای گزینه tear-off نخواهد بود و گزینههای منو در موقعیت صفر به بعد اضافه میشوند. |
title | در حالت عادی، عنوان پنجره منویی که جدا شده است، همان متن menubutton یا cascade مربوط به آن میباشد. اگر میخواهید عنوان پنجره جدا شده را تغییر دهید، متن مورد نظر خود را به title انتساب دهید/ |
این توابع برای شیء Menu وجود دارند.
تابع | شرح |
add_command(options) | یک آیتم به منو اضافه میکند. |
add_radiobutton(options) | یک آیتم از نوع radiobutton به منو اضافه میکند. |
add_checkbutton(options) | یک آیتم از نوع checkbutton به منو اضافه میکند. |
add_cascade(options) | منوی دریافتی را به عنوان زیر شاخه به منوی اصلی اضافه میکند. |
()add_separator | یک خط جدا کننده به منو اضافه میکند. |
add(type, options) | یک آیتم از نوع مشخص شده به وسیله type به منو اضافه میکند. |
delete(startindex [, endindex ]) | آیتمهای منو را از startindex تا endindex حذف میکند. |
entryconfig(index, options) | امکان تغییر تنظیمات آیتم در موقعیت index را فراهم میآورد. |
index(item) | شماره اندیس item را در منو بر میگرداند. |
insert_separator(index) | یک خط جدا کننده در موقعیت index به منو اضافه میکند. |
invoke(index) | تابع انتساب یافته به command آیتم در موقعیت index را فراخوانی میکند. اگر آیتم مربوطه checkbutton باشد، وضعیت آن تغییر میکند. اگر radiobutton باشد، آن آیتم فعال میشود. |
type(index) | نوع آیتم در موقعیت index را بر میگرداند. یکی از مقادیر cascade ،checkbutton ،command ،radiobutton ،separator یا tearoff |
حال اجازه دهید که وارد قسمت کدنویسی شده و نوار منوی بالا را شبیه سازی کنیم. به کد زیر توجه کنید :
1: import tkinter 2: from tkinter import * 3: 4: window = tkinter.Tk() 5: window.geometry('300x200') 6: 7: menubar = Menu(window) 8: filemenu = Menu(menubar, tearoff=0) 9: editmenu = Menu(menubar, tearoff=0) 10: formatmenu = Menu(menubar, tearoff=0) 11: helpmenu = Menu(menubar, tearoff=0) 12: 13: 14: subfilemenu = Menu(filemenu, tearoff=0) 15: subfilemenu.add_command(label='New Documnet') 16: filemenu.add_cascade(label='New' , accelerator="Ctrl+N", menu=subfilemenu) 17: filemenu.add_command(label='Open', accelerator="Ctrl+O", underline=0) 18: filemenu.add_separator() 19: filemenu.add_command(label='Quit', accelerator="Ctrl+Q") 20: 21: 22: state = BooleanVar() 23: state.set(True) 24: formatmenu.add_checkbutton(label='Word Wrap', onvalue=True, offvalue=0, variable=state) 25: 26: 27: menubar.add_cascade(label='File' , menu=filemenu) 28: menubar.add_cascade(label="Edit" , menu=editmenu) 29: menubar.add_cascade(label="Format", menu=formatmenu) 30: menubar.add_cascade(label="Help" , menu=helpmenu) 31: 32: window.config(menu=menubar) 33: window.mainloop()
نگران کدهای بالا نباشید. تمامی آنها را خط به خط توضیح میدهیم. در کد بالا و در خط 7 به برنامه میفهمانیم که میخواهیم یک منو به برنامه اضافه کنیم. در خطوط 11-8 ما چهار زیر منو ایجاد کرده و سپس در خطوط 30-27 و با استفاده از متد ()add_cascade آنها را به منوی اصلی اضافه میکنیم. نکتهای که نباید فراموش شود این است که در خط 7 و در داخل پرانتز نوشتهایم window، که به معنای این است که منوی اصلی قرار است به پنجره اصلی اضافه شود و در خطوط 11-8 و در داخل پرانتز نوشتهایم menubar، که به معنای این است که این گزینهها قرار است به منوی اصلی اضافه شوند. اگر خطوط 24-14 را حذف و برنامه را اجرا کنید، پنجره به شکل زیر نمایش داده میشود:
حال نوبت به اجرای زیر منو برای گزینه File میرسد. در خطوط 14 یک منو با نام subfilemenu ایجاد کرده و در داخل پرانتز آن نامی که به منوی File در خط 8 اختصاص دادهایم یعنی filemenu را مینویسیم. این بدین معنی است که subfilemenu قرار است به منوی File اضافه شود. در خط 15 یک گزینه را با استفاده از متد ()add_command به subfilemenu اضافه کرده و سپس در خط 16 یک منوی آبشاری را با استفاده از متد ()add_cascade و با نام New در داخل منوی File ایجاد کرده و subfilemenu را به آن اضافه میکنیم. در خط 17 و 19 دو گزینه دیگر را با استفاده از متد ()add_command به منوی File کرده و از متد ()add_separator هم برای ایجاد یک جدا کننده استفاده میکنیم (خط 18) :
من حق عضویت رو پرداخت کردم اما هنوز اجازه استفاده رو بهم نداده…
اشتراک شما فعال شد