Author Topic: sexy-python <libsexy tutorial>  (Read 1477 times)

Ahmed Youssef

  • Helping Freak
  • Administrator
  • Active Member
  • *****
  • Posts: 242
    • View Profile
    • WWW
    • Email
sexy-python <libsexy tutorial>
« on: May 11, 2009, 02:08:03 AM »
بايثون اكيد sexy بس احنا هنتكلم عن libsexy :D

libsexy هى مجموعة من الويدجات لتزيد من امكانيات بعض الويدجات زى GtkEntry, GtkLabel



المهم من بين الويدجات entry تراعى صحة الكلمات بإسم SpellEntry واخرى تسمح بإضافة ايكون على ال GtkEntry - --ملحوظة اقرا ملف فى مرجع GTK+ بإسم Migrating from SexyIconEntry to GtkEntry- والويدجت التالت هو UrlLabel

مثال بسيط
 
Code: [Select]
 #python
import sys
import webbrowser

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



class MyWindow(gtk.Window):
   
    def __init__(self):
        super(MyWindow, self).__init__()
        self._init_comps()
       
    def _init_comps(self):
        self.vbox=gtk.VBox(False, 0)
        self.lblurl=sexy.UrlLabel()
        self.lblurl.set_markup('<a href="http://programming-fr34ks.net">PF</a>')
        self.lblurl.connect("url-activated", self._on_urlclicked)
       
        self.vbox.pack_start(self.lblurl, False, False, 0)
        self.spellentry=sexy.SpellEntry()
        self.vbox.pack_start(self.spellentry, False, False, 0)
        self.iconentry=sexy.IconEntry()
        img=gtk.Image()

#['ICON_SIZE_BUTTON', 'ICON_SIZE_DIALOG', 'ICON_SIZE_DND', 'ICON_SIZE_INVALID', 'ICON_SIZE_LARGE_TOOLBAR', 'ICON_SIZE_MENU', 'ICON_SIZE_SMALL_TOOLBAR']

        img.set_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_BUTTON)
        self.iconentry.set_icon(0, img)
        self.vbox.pack_start(self.iconentry, False, False, 0)
       
        self.add(self.vbox)

    def _on_urlclicked(self, widget, url):
        webbrowser.open_new_tab(url)

def main():
    m=MyWindow()
    m.show_all()
    gtk.main()
   
if __name__=="__main__":
    main()


اولا بنستدعى libsexy كالتالى
 
Code: [Select]
 import sexy

ننشئ الصف الجديد MyWindow
 
Code: [Select]
class MyWindow(gtk.Window):
   
    def __init__(self):
        super(MyWindow, self).__init__()
        self._init_comps()

       
بيرث gtk.Window ونستدعى فيه   self._init_comps() المعرفة كالتالى
 
Code: [Select]
    def _init_comps(self):
        self.vbox=gtk.VBox(False, 0)

الصندوق الرأسى
 
Code: [Select]
        self.lblurl=sexy.UrlLabel() 

ال label الواعى عن ال link (ضعه فى a tag )
 
Code: [Select]
        self.lblurl.set_markup('<a href="http://programming-fr34ks.net">PF</a>') 
Code: [Select]
        self.lblurl.connect("url-activated", self._on_urlclicked) 

       نربط الإشارة url-activated بالطريقة _on_urlclicked
 
Code: [Select]
        self.vbox.pack_start(self.lblurl, False, False, 0) 

نضيفه للصندوق الرأسى
 
Code: [Select]
        self.spellentry=sexy.SpellEntry() 

ننشئ SpellEntry -ليقوم بتصحيح الكلمات
 
Code: [Select]
        self.vbox.pack_start(self.spellentry, False, False, 0) 

نضيفه للصندوق الرأسى
 
Code: [Select]
        self.iconentry=sexy.IconEntry() 

ننشئ IconEntry يسمح بإضافة ايكون
 
Code: [Select]
        img=gtk.Image() 

ننشئ كائن gtk.Image
 
Code: [Select]
        img.set_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_BUTTON) 

نحصل على محتواه من ال gtk.STOCK_NEW
 
Code: [Select]
        self.iconentry.set_icon(0, img) 

نحدد مركز الأيكون
 
Code: [Select]
         self.vbox.pack_start(self.iconentry, False, False, 0)

        نضيفه للصندوق الرأسى
 
Code: [Select]
        self.add(self.vbox) 

نضيف الصندوق الرأسى للنافذة
 
Code: [Select]
    def _on_urlclicked(self, widget, url): 

معالج الإشارة url-activated هيقوم بفتح تاب جديد فى المتصفح باللينك المختار
 
Code: [Select]
        webbrowser.open_new_tab(url) 


« Last Edit: May 13, 2009, 06:44:50 PM by Ahmed Youssef »
Logged

Life is just a chance to grow a soul. - A. Powell
Weblog: http://ahmedyoussef.wordpress.com/