شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش پایتون - منو

هدف این ویجت امکان ایجاد انواع مختلفی از منوها برای استفاده در برنامه‌ها می باشد. امکانات اصلی این ابزار، سه نوع منو ایجاد می‌باشد: پاپ‌آپ (Pop-up)، تاپ‌لول (Toplevel) و پول‌دان (Pull-down).

همچنین امکان استفاده از ابزارک‌های دیگر توسعه‌یافته برای پیاده‌سازی انواع جدید منوها نیز وجود دارد، مانند ابزارک OptionMenu که نوعی ویژه را پیاده‌سازی می‌کند که یک لیست پاپ‌آپ از آیتم‌ها در یک انتخاب را ایجاد می‌کند.

سینتکس

w = Menu ( master, option, ... )

پارامترها (Parameters)

  • master − این نمایانگر پنجره والد (پنجره‌ای که منو در آن قرار می‌گیرد) است.

  • options − در اینجا لیستی از گزینه‌های بیشترین استفاده را برای این ابزارک دارند آمده‌است. این گزینه‌ها می‌توانند به صورت جفت کلیدی-مقدار جداشده با کاما استفاده شوند.

ردیف توضیحات
1

activebackground

رنگ پس‌زمینه‌ای که وقتی موس روی یک گزینه است، ظاهر می‌شود.

2

activeborderwidth

عرض حاشیه‌ی ایجاد شده دور گزینه وقتی موس روی آن است. مقدار پیش‌فرض 1 پیکسل است.

3

activeforeground

رنگ نوشتاری که وقتی موس روی یک گزینه است، ظاهر می‌شود.

4

bg

رنگ پس‌زمینه‌ی گزینه‌ها وقتی موس روی آنها نیست.

5

bd

عرض حاشیه‌ی ایجاد شده دور تمام گزینه‌ها. مقدار پیش‌فرض 1 است.

6

cursor

نشانگری که ظاهر می‌شود وقتی موس روی گزینه‌هاست، اما فقط زمانی که منو از پنجره‌ی والد جدا شده باشد.

7

disabledforeground

رنگ متن آیتم‌ها وقتی که وضعیت آنها DISABLED است.

8

font

فونت پیش‌فرض برای گزینه‌های متنی.

9

fg

رنگ نوشتاری که برای گزینه‌ها وقتی موس روی آنها نیست، استفاده می‌شود.

10

postcommand

می‌توانید این گزینه را به یک رویه مقداردهی کنید و هر بار که کسی این منو را باز می‌کند، آن رویه فراخوانی خواهد شد.

11

relief

اعمال افکت ۳-بعدی برای منوها که relief=RAISED پیش‌فرض آن است.

12

image

نمایش تصویر روی این دکمه منو.

13

selectcolor

تعیین رنگ نمایش داده شده در چک‌باکس‌ها و رادیوباکس‌ها وقتی که انتخاب شده‌اند.

14

tearoff

به‌طور معمول، یک منو می‌تواند از پنجره‌ی والد جدا شود. جایگاه اول (جایگاه ۰) در لیست گزینه‌ها توسط عنصر tear-off اشغال می‌شود و گزینه‌های اضافی از جایگاه ۱ به بعد اضافه می‌شوند. اگر tearoff=0 تنظیم کنید، منو دارای ویژگی tear-off نخواهد بود و گزینه‌ها از جایگاه ۰ به بعد اضافه می‌شوند.

15

title

به‌طور معمول، عنوان پنجره‌ی منویی که جدا شده‌است همان متن دکمه منو (menubutton) یا پیش‌نویس (cascade) است که به این منو منتهی می‌شود. اگر می‌خواهید عنوان آن پنجره را تغییر دهید، گزینه‌ی title را به آن رشته مقداردهی کنید.

روش‌ها (Methods)

این روش‌ها بر روی اشیاء منو قابل استفاده هستند −

ردیف گزینه & توضیحات
1

add_command (options)

یک آیتم منو را به منو اضافه می‌کند.

2

add_radiobutton (options)

یک آیتم منو با دکمه رادیویی ایجاد می‌کند.

3

add_checkbutton (options)

یک آیتم منو با دکمه چک‌باکس ایجاد می‌کند.

4

add_cascade (options)

یک منوی سلسله مراتبی جدید ایجاد می‌کند با ارتباط آن به یک منوی والد (پدر).

5

add_separator()

یک خط جدا‌کننده به منو اضافه می‌کند.

6

add(type, options)

یک نوع خاص از آیتم منو را به منو اضافه می‌کند.

7

delete(startindex [, endindex ])

آیتم‌های منو را از اندیس شروع تا اندیس پایانی حذف می‌کند.

8

entryconfig(index, options)

به شما اجازه می‌دهد تا یک آیتم منو را که با اندیس شناسایی می‌شود، تغییر داده و گزینه‌های آن را تغییر دهید.

9

index(item)

شماره اندیس لیبل آیتم منوی داده شده را برمی‌گرداند.

10

insert_separator(index)

یک خط جدا‌کننده جدید در موقعیت مشخص‌شده توسط اندیس اضافه می‌کند.

11

invoke(index)

کالبک دستوری که با گزینه‌ی در اندیس مشخص شده ارتباط دارد را فراخوانی می‌کند. اگر یک دکمه چک‌باکس باشد، وضعیت آن بین تنظیم و پاک شدن تغییر می‌کند؛ اگر یک دکمه رادیویی باشد، انتخاب آن تنظیم می‌شود.

12

type(index)

نوع گزینه‌ی مشخص شده توسط اندیس را برمی‌گرداند: "cascade"، "checkbutton"، "command"، "radiobutton"، "separator" یا "tearoff".

نمونه

 

from tkinter import *

def donothing():
   filewin = Toplevel(root)
   button = Button(filewin, text="Do nothing button")
   button.pack()
   
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_command(label="Save as...", command=donothing)
filemenu.add_command(label="Close", command=donothing)

filemenu.add_separator()

filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Undo", command=donothing)

editmenu.add_separator()

editmenu.add_command(label="Cut", command=donothing)
editmenu.add_command(label="Copy", command=donothing)
editmenu.add_command(label="Paste", command=donothing)
editmenu.add_command(label="Delete", command=donothing)
editmenu.add_command(label="Select All", command=donothing)

menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=donothing)
helpmenu.add_command(label="About...", command=donothing)
menubar.add_cascade(label="Help", menu=helpmenu)

root.config(menu=menubar)
root.mainloop()

زمانی که کد بالا اجرا می‌شود، نتیجه‌ی زیر تولید می‌شود −

منوی تی‌کی (TK Menu)