آموزش MenuBar ،Menu و MenuItem در PyGTK
آموزش MenuBar ،Menu و MenuItem در PyGTK
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش MenuBar ،Menu و MenuItem در PyGTK خواهیم پرداخت.
پیشنهاد ویژه : آموزش طراحی وب سایت با پایتون
یک نوار افقی درست زیر نوار عنوان یک gtk toplevel. Windows برای نمایش مجموعه ای از منوها محفوظ است. این یک شیء از کلاس gtk.MenuBar در PyGTK API است.
یک شیء از کلاس gtk.Menu به نوار منو اضافه می شود. همچنین برای ایجاد منوی زمینه و منوی بازشو استفاده می شود. هر منو ممکن است حاوی یک یا چند ویجت gtk.MenuItem باشد. برخی از آنها می توانند زیر منو باشند و دارای دکمه های MenuItem هستند.
gtk.MenuBar زیر کلاس gtk.MenuShell است. این یک سازنده پیش فرض ساده دارد –
1 |
gtk.MenuBar() |
برای افزودن منو به MenuBar، از متد ()append کلاس MenuBar استفاده می شود.
به منظور ایجاد منو، یک ویجت MenuItem با برچسبی که می خواهید در نوار منو ظاهر شود ایجاد کنید و آن را به عنوان زیرمنو تنظیم کنید.
به عنوان مثال، کد زیر برای تنظیم منوی File استفاده می شود –
1 2 3 |
menu1 = gtk.Menu() file = gtk.MenuItem("_File") file.set_submenu(menu1) |
اکنون ، یک یا چند ویجت از کلاس MenuItem را می توان در منو اضافه کرد.
1 2 |
item1 = gtk.MenuItem("New") item2 = gtk.MenuItem("Open") |
این MenuItems به ویجت منو و شیء منو به نوبه خود به نوار منو اضافه می شود.
1 2 3 |
menu1.append (item1) menu1.append (item2) mb.append (menu1) |
مجموعه ابزار PyGTK انواع مختلفی از ویجت های MenuItem را ارائه می دهد. ImageMenuItem یک آیتم منو با تصویر مرتبط با آن است. می توانید از هر یک از تصاویر موجود با استفاده از پارامتر ID ID استفاده کنید یا هر تصویر دیگری را با روش ()set_image اختصاص دهید.
به عنوان مثال ، آیتم منو “جدید” دارای تصویر به روش زیر ایجاد می شود –
1 2 |
new = gtk.ImageMenuItem(gtk.STOCK_NEW) menu1.append(new) |
به طور مشابه ، امکان افزودن CheckMenuItem با استفاده از کد زیر نیز وجود دارد –
1 2 |
chk = gtk.CheckMenuItem("Checkable") menu1.append(chk) |
همچنین می توانید گروهی از موارد رادیویی را با استفاده از این کد اضافه کنید –
1 2 3 4 |
radio1 = gtk.RadioMenuItem(None,"Radio1") radio2 = gtk.RadioMenuItem(radio1, "Radio2") menu1.append(radio1) menu1.append(radio2) |
گاهی اوقات، ممکن است بخواهید یک خط جداکننده بین موارد منو اضافه کنید. برای این منظور ، SeparatorMenuItem نیز در دسترس است.
1 2 |
sep = gtk.SeparatorMenuItem () menu1.append (sep) |
همچنین می توانید میانبرهای صفحه کلید را به موارد منو اختصاص دهید. PyGTK دارای شتاب دهنده است. با ایجاد یک گروه شتابدهنده شروع کنید و آن را به پنجره سطح بالا وصل کنید.
1 2 |
acgroup = gtk.AccelGroup () self.add_accel_group (acgroup) |
برای اختصاص میانبر ، از تابع ()add_accelerator با نمونه اولیه زیر استفاده کنید –
1 |
Item1.add_accelerator(signal, group, key, modifier, flags) |
موارد زیر برخی از اصلاح کننده های از پیش تعریف شده است –
- SHIFT_MASK
- LOCK_MASK
- CONTROL_MASK
- BUTTON1_MASK
- BUTTON1_MASK
برای اختصاص میانبر Ctrl+N به آیتم New Menu ، از نحو زیر استفاده کنید –
1 2 3 |
new = gtk.ImageMenuItem(gtk.STOCK_NEW,acgroup) new.add_accelerator("activate", acgroup, ord('N'), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) |
مثال
مثال زیر ویژگی های مورد بحث در بالا را نشان می دهد –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Menu Demo") self.set_default_size(250, 200) self.set_position(gtk.WIN_POS_CENTER) mb = gtk.MenuBar() menu1 = gtk.Menu() file = gtk.MenuItem("_File") file.set_submenu(menu1) acgroup = gtk.AccelGroup() self.add_accel_group(acgroup) new = gtk.ImageMenuItem(gtk.STOCK_NEW,acgroup) new.add_accelerator("activate", acgroup, ord('N'), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu1.append(new) open = gtk.ImageMenuItem(gtk.STOCK_OPEN) menu1.append(open) chk = gtk.CheckMenuItem("Checkable") menu1.append(chk) radio1 = gtk.RadioMenuItem(None,"Radio1") radio2 = gtk.RadioMenuItem(radio1, "Radio2") menu1.append(radio1) menu1.append(radio2) sep = gtk.SeparatorMenuItem() menu1.append(sep) exit = gtk.ImageMenuItem(gtk.STOCK_QUIT) menu1.append(exit) menu2 = gtk.Menu() edit = gtk.MenuItem("_Edit") edit.set_submenu(menu2) copy = gtk.ImageMenuItem(gtk.STOCK_COPY) menu2.append(copy) cut = gtk.ImageMenuItem(gtk.STOCK_CUT) menu2.append(cut) paste = gtk.ImageMenuItem(gtk.STOCK_PASTE) menu2.append(paste) mb.append(file) mb.append(edit) vbox = gtk.VBox(False, 2) vbox.pack_start(mb, False, False, 0) self.add(vbox) self.connect("destroy", gtk.main_quit) self.show_all() if __name__ == '__main__': PyApp() gtk.main() |
کد بالا خروجی زیر را تولید می کند –
لیست جلسات قبل آموزش PyGTK
- آموزش PyGTK
- معرفی PyGTK
- آموزش محیط PyGTK
- آموزش Hello World در PyGTK
- آموزش کلاس های مهم در PyGTK
- آموزش کلاس پنجره در PyGTK
- آموزش کلاس دکمه در PyGTK
- آموزش کلاس لیبل در PyGTK
- آموزش کلاس ورود در PyGTK
- آموزش مدیریت سیگنال در PyGTK
- آموزش مدیریت رویداد در PyGTK
- آموزش کانتینر در PyGTK
- آموزش کلاس جعبه در PyGTK
- آموزش کلاس ButtonBox در PyGTK
- آموزش کلاس تراز در PyGTK
- آموزش کلاس EventBox در PyGTK
- آموزش کلاس Layout در PyGTK
- آموزش کلاس ComboBox در PyGTK
- آموزش کلاس ToggleButton در PyGTK
- آموزش کلاس CheckButton در PyGTK
- آموزش کلاس RadioButton در PyGTK
دیدگاه شما