آموزش MenuBar ،Menu و MenuItem در PyGTK

3 سال پیش
آموزش 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 است. این یک سازنده پیش فرض ساده دارد –

gtk.MenuBar()

 

برای افزودن منو به MenuBar، از متد ()append کلاس MenuBar استفاده می شود.

به منظور ایجاد منو، یک ویجت MenuItem با برچسبی که می خواهید در نوار منو ظاهر شود ایجاد کنید و آن را به عنوان زیرمنو تنظیم کنید.

به عنوان مثال، کد زیر برای تنظیم منوی File استفاده می شود –

menu1 = gtk.Menu()
file = gtk.MenuItem("_File")
file.set_submenu(menu1)

 

اکنون ، یک یا چند ویجت از کلاس MenuItem را می توان در منو اضافه کرد.

item1 = gtk.MenuItem("New")
item2 = gtk.MenuItem("Open")

 

این MenuItems به ویجت منو و شیء منو به نوبه خود به نوار منو اضافه می شود.

menu1.append (item1)
menu1.append (item2)
mb.append (menu1)

 

مجموعه ابزار PyGTK انواع مختلفی از ویجت های MenuItem را ارائه می دهد. ImageMenuItem یک آیتم منو با تصویر مرتبط با آن است. می توانید از هر یک از تصاویر موجود با استفاده از پارامتر ID ID استفاده کنید یا هر تصویر دیگری را با روش ()set_image اختصاص دهید.

به عنوان مثال ، آیتم منو “جدید” دارای تصویر به روش زیر ایجاد می شود –

new = gtk.ImageMenuItem(gtk.STOCK_NEW)
menu1.append(new)

 

به طور مشابه ، امکان افزودن CheckMenuItem با استفاده از کد زیر نیز وجود دارد –

chk = gtk.CheckMenuItem("Checkable")
menu1.append(chk)

 

همچنین می توانید گروهی از موارد رادیویی را با استفاده از این کد اضافه کنید –

radio1 = gtk.RadioMenuItem(None,"Radio1")
radio2 = gtk.RadioMenuItem(radio1, "Radio2")
menu1.append(radio1)
menu1.append(radio2)

 

گاهی اوقات، ممکن است بخواهید یک خط جداکننده بین موارد منو اضافه کنید. برای این منظور ، SeparatorMenuItem نیز در دسترس است.

sep = gtk.SeparatorMenuItem ()
menu1.append (sep)

 

همچنین می توانید میانبرهای صفحه کلید را به موارد منو اختصاص دهید. PyGTK دارای شتاب دهنده است. با ایجاد یک گروه شتابدهنده شروع کنید و آن را به پنجره سطح بالا وصل کنید.

acgroup = gtk.AccelGroup ()
self.add_accel_group (acgroup)

 

برای اختصاص میانبر ، از تابع ()add_accelerator با نمونه اولیه زیر استفاده کنید –

Item1.add_accelerator(signal, group, key, modifier, flags)

 

موارد زیر برخی از اصلاح کننده های از پیش تعریف شده است –

  • SHIFT_MASK
  • LOCK_MASK
  • CONTROL_MASK
  • BUTTON1_MASK
  • BUTTON1_MASK

برای اختصاص میانبر Ctrl+N به آیتم New Menu ، از نحو زیر استفاده کنید –

new = gtk.ImageMenuItem(gtk.STOCK_NEW,acgroup)
new.add_accelerator("activate", acgroup, ord('N'), 
   gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

 

مثال

مثال زیر ویژگی های مورد بحث در بالا را نشان می دهد –

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

 

کد بالا خروجی زیر را تولید می کند –

Menu Demo

 

منبع.

 

لیست جلسات قبل آموزش PyGTK

  1. آموزش PyGTK
  2. معرفی PyGTK
  3. آموزش محیط  PyGTK
  4. آموزش Hello World در  PyGTK
  5. آموزش کلاس های مهم در  PyGTK
  6. آموزش کلاس پنجره در PyGTK
  7. آموزش کلاس دکمه در PyGTK
  8. آموزش کلاس لیبل در PyGTK
  9. آموزش کلاس ورود در PyGTK
  10. آموزش مدیریت سیگنال در PyGTK
  11. آموزش مدیریت رویداد در PyGTK
  12. آموزش کانتینر در PyGTK
  13. آموزش کلاس جعبه در PyGTK
  14. آموزش کلاس ButtonBox در PyGTK
  15. آموزش کلاس تراز در PyGTK
  16. آموزش کلاس EventBox در PyGTK
  17. آموزش کلاس Layout در PyGTK
  18. آموزش کلاس ComboBox در PyGTK
  19. آموزش کلاس ToggleButton در PyGTK
  20. آموزش کلاس CheckButton در PyGTK
  21. آموزش کلاس RadioButton در PyGTK
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه