آموزش کلاس ComboBox در PyGTK

3 سال پیش

آموزش کلاس ComboBox در PyGTK

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش کلاس ComboBox در PyGTK خواهیم پرداخت.

پیشنهاد ویژه : آموزش طراحی وب سایت با پایتون

ComboBox یک ویجت قدرتمند و محبوب در هر جعبه ابزار GUI است. این یک لیست کشویی از مواردی را که کاربر می تواند از بین آنها انتخاب کند، ارائه می دهد. ویجت gtk.ComboBox رابط CellLayout را پیاده سازی کرده و روشهای مختلفی را برای مدیریت نمایش موارد ارائه می دهد.

 

هدف کلاس gtk.ComboBox با ListSore همراه است، که یک مدل لیست است که می تواند با ابزارک هایی که مجموعه ای از اقلام را نمایش می دهند استفاده شود. موارد با روش ()append به ListStore اضافه می شوند. علاوه بر این، یک شی CellRendererText ایجاد شده و در جعبه combobox بسته بندی می شود.

 

برای راه اندازی combobox این مراحل را دنبال کنید.

combobox = gtk.ComboBox()
store = gtk.ListStore(gobject.TYPE_STRING)
cell = gtk.CellRendererText()
combobox.pack_start(cell)
combobox.add_attribute(cell, 'text', 0)

 

PyGTK روش راحتی را ارائه می دهد – ()gtk.combo_box_new_text  برای ایجاد یک جعبه ترکیبی به جای استفاده از فروشگاه فهرست. روشهای سهولت مرتبط ()append_text() ، prepend_text() ، insert_text و ()remove_text  برای مدیریت محتوای ترکیبی جعبه استفاده می شود.

 

کلاس gtk.ComboBox روشهای زیر را دارد –

S.NO Methods and Description
۱ ()set_wrap_width

تعداد ستون هایی را که در چیدمان جدول پنجره نمایش داده می شود، تنظیم می کند

۲ ()get_active

مقدار ویژگی “active” را که در مدل آیتم فعلی فعال است نشان می دهد

۳ ()set_active

مورد فعال combo_box را به موردی با شاخص مدل مشخص شده تنظیم می کند

۴ ()set_model

مدل مورد استفاده در جعبه ترکیبی را تنظیم می کند

۵ ()append_text

رشته مشخص شده توسط متن را به لیست رشته های ذخیره شده در فروشگاه فهرست ترکیبی جعبه اضافه می کند

۶ ()Insert_text

رشته مشخص شده توسط متن را در جعبه ترکیبی gtk.ListStore در نمایه مشخص شده توسط موقعیت قرار می دهد

۷ ()prepend_text

رشته مشخص شده توسط متن را به لیست رشته های ذخیره شده در فروشگاه فهرست اضافه می کند

۸ ()remove_text

رشته را در فهرست مشخص شده توسط موقعیت در فروشگاه فهرست مرتبط حذف می کند

۹ ()get_active_text

رشته فعلی را برمی گرداند

 

 

ویجت ComboBox سیگنال های زیر را منتشر می کند –

changed وقتی یک مورد جدید در جعبه ترکیبی انتخاب می شود ، منتشر می شود
move_active این یک سیگنال اتصال دهنده کلید است که برای حرکت انتخاب فعال منتشر می شود.
Popdown این یک سیگنال اتصال دهنده کلید است که برای باز شدن لیست ترکیبی جعبه منتشر می شود. پیوندهای پیش فرض برای این سیگنال Alt+Up و Escape هستند
Popup یک سیگنال اتصال دهنده کلید است که در پنجره ترکیبی جعبه ترکیبی منتشر می شود. اتصالهای پیش فرض برای این سیگنال Alt+Down هستند.

 

دو کد نمونه برای نمایش ComboBox در زیر آورده شده است.

 

مثال ۱

در این مثال ListStore با نام جعبه ابزارهای رایج Python GUI و با ویجت ComboBox مرتبط است. با انتخاب کاربر، سیگنال تغییر یافته منتشر می شود. برای نمایش انتخاب کاربر ، به یک تابع callback متصل می شود.

import pygtk
pygtk.require('2.0')
import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("ComboBox with ListStore")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      combobox = gtk.ComboBox()
      store = gtk.ListStore(str)
      cell = gtk.CellRendererText()
      combobox.pack_start(cell)
      combobox.add_attribute(cell, 'text', 0)
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      fixed.put(combobox, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      
      store.append (["PyQt"])
      store.append (["Tkinter"])
      store.append (["WxPython"])
      store.append (["PyGTK"])
      store.append (["PySide"])
      combobox.set_model(store)
      combobox.connect('changed', self.on_changed)
      combobox.set_active(0)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      return
   
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
      return
      
if __name__ == '__main__':
PyApp()
gtk.main()

 

مثال ۲

نسخه دوم برنامه از روش راحتی ()combo_box_new_text  برای ایجاد یک جعبه ترکیبی و تابع ()append_text  برای افزودن رشته ها در آن استفاده می کند. در هر دو برنامه ، از روش ()get_active_text  برای انتخاب کاربر و نمایش برچسب روی پنجره استفاده می شود.

import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Simple ComboBox")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      cb = gtk.combo_box_new_text()
      cb.connect("changed", self.on_changed)
      cb.append_text('PyQt')
      cb.append_text('Tkinter')
      cb.append_text('WxPython')
      cb.append_text('PyGTK')
      cb.append_text('PySide')
      
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      
      fixed.put(cb, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
if __name__ == '__main__':
   PyApp()
   gtk.main()

 

خروجی این برنامه مشابه برنامه قبلی است.

ComboBox

 

منبع.

 

لیست جلسات قبل آموزش 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
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه