فى هذه الجزئية سنتعامل مع شرائط الأدوات.تقوم القوائم بتجميع كل الأوامر ولكن يقوم شريط الأدوات بتوفير وصول سريع لأكثر الأوامر المستخدمه من شريط القوائم
فى التالى سننشئ شريط ادوات بسيط
toolbar.py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example shows a toolbar # widget # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Toolbar") self.set_size_request(250, 200) self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440)) self.set_position(gtk.WIN_POS_CENTER) toolbar = gtk.Toolbar() toolbar.set_style(gtk.TOOLBAR_ICONS) newtb = gtk.ToolButton(gtk.STOCK_NEW) opentb = gtk.ToolButton(gtk.STOCK_OPEN) savetb = gtk.ToolButton(gtk.STOCK_SAVE) sep = gtk.SeparatorToolItem() quittb = gtk.ToolButton(gtk.STOCK_QUIT) toolbar.insert(newtb, 0) toolbar.insert(opentb, 1) toolbar.insert(savetb, 2) toolbar.insert(sep, 3) toolbar.insert(quittb, 4) quittb.connect("clicked", gtk.main_quit) vbox = gtk.VBox(False, 2) vbox.pack_start(toolbar, False, False, 0) self.add(vbox) self.connect("destroy", gtk.main_quit) self.show_all() PyApp() gtk.main()
المثال يشرح انشاء شريط ادوات و 4 ازرار
toolbar = gtk.Toolbar()انشاء شريط الأدوات
toolbar.set_style(gtk.TOOLBAR_ICONS)سنعرض ايكونات فقط لانص -text-
newtb = gtk.ToolButton(gtk.STOCK_NEW)انشاء الويدجت ToolButton مع صورة من ال stock
sep = gtk.SeparatorToolItem()هذا العنصر فاصل بين مكونات شريط الأدوات لتقسيم لمجموعات منطقية
toolbar.insert(newtb, 0) toolbar.insert(opentb, 1) ...
اضافة الأزرار لشريط الأدوات
Figure: Toolbar
فى المثال التالى سننشئ شريطى ادوات، الكثير من التطبيقات لها اكثر من شريط ادوات.. سنعرض كيفية عمل ذلك
toolbars.py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example shows two toolbars # in the application window # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Toolbars") self.set_size_request(350, 300) self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440)) self.set_position(gtk.WIN_POS_CENTER) upper = gtk.Toolbar() upper.set_style(gtk.TOOLBAR_ICONS) newtb = gtk.ToolButton(gtk.STOCK_NEW) opentb = gtk.ToolButton(gtk.STOCK_OPEN) savetb = gtk.ToolButton(gtk.STOCK_SAVE) upper.insert(newtb, 0) upper.insert(opentb, 1) upper.insert(savetb, 2) lower = gtk.Toolbar() lower.set_style(gtk.TOOLBAR_ICONS) quittb = gtk.ToolButton(gtk.STOCK_QUIT) quittb.connect("clicked", gtk.main_quit) lower.insert(quittb, 0) vbox = gtk.VBox(False, 0) vbox.pack_start(upper, False, False, 0) vbox.pack_start(lower, False, False, 0) self.add(vbox) self.connect("destroy", gtk.main_quit) self.show_all() PyApp() gtk.main()
تطبيقنا يعرض شريطى ادوات
upper = gtk.Toolbar() ... lower = gtk.Toolbar()
هنا ننشئ شريطى الأدوات
upper.insert(newtb, 0) ... lower.insert(quittb, 0)
كل منها له ازراره الخاصة
vbox = gtk.VBox(False, 0) vbox.pack_start(upper, False, False, 0) vbox.pack_start(lower, False, False, 0)
يتم ضمهم فى صندوق افقى الواحد تلو الآخر
Figure: Toolbars
فى المثال التالى سنشرح كيفية عدم تفعيل ازرار فى شريط الأدوات، استخدام شائع فى التطبيقات الرسومية.. على سبيل المثال عدم تفعيل زر الحفظ save عندما نقوم بحفظ كل التغييرات على ملفنا فى القرص، هكذا يعلم المستخدم ان تم حفظ كل التغييرات
undoredo.py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example shows how to # activate/deactivate a ToolButton # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Toolbar") self.set_size_request(250, 200) self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440)) self.set_position(gtk.WIN_POS_CENTER) self.count = 2 toolbar = gtk.Toolbar() toolbar.set_style(gtk.TOOLBAR_ICONS) self.undo = gtk.ToolButton(gtk.STOCK_UNDO) self.redo = gtk.ToolButton(gtk.STOCK_REDO) sep = gtk.SeparatorToolItem() quit = gtk.ToolButton(gtk.STOCK_QUIT) toolbar.insert(self.undo, 0) toolbar.insert(self.redo, 1) toolbar.insert(sep, 2) toolbar.insert(quit, 3) self.undo.connect("clicked", self.on_undo) self.redo.connect("clicked", self.on_redo) quit.connect("clicked", gtk.main_quit) vbox = gtk.VBox(False, 2) vbox.pack_start(toolbar, False, False, 0) self.add(vbox) self.connect("destroy", gtk.main_quit) self.show_all() def on_undo(self, widget): self.count = self.count - 1 if self.count <= 0: self.undo.set_sensitive(False) self.redo.set_sensitive(True) def on_redo(self, widget): self.count = self.count + 1 if self.count >= 5: self.redo.set_sensitive(False) self.undo.set_sensitive(True) PyApp() gtk.main()
فى المثال لدينا زري undo, redo من ال stock .. وبعد مجموعة من الضغطات يتم الغاء تفعيلهم فيتحولو للون الرمادى
self.count = 2المتغيرself.count نستخدمه لتحديد اى الزرين هو المنشط او غير منشط
self.undo = gtk.ToolButton(gtk.STOCK_UNDO) self.redo = gtk.ToolButton(gtk.STOCK_REDO)
لدينا زرين undo, redo انشئناهم والصور حصلنا عليها من ال stock
self.undo.connect("clicked", self.on_undo) self.redo.connect("clicked", self.on_redo)
نربط الإشارة Clicked لكل منهما بمعالج الحدث المناسب له
if self.count <= 0: self.undo.set_sensitive(False) self.redo.set_sensitive(True)
لتنشيط ويدجت نقوم بإسناد القيمة true للخاصية Sensitive و لعدم تنشيطه نسند قيمة false
Figure: Undo redo
فى هذه الجزئية شرحنا كيفية استخدام شريط الأدوات
Home Contents Top of Page