بايثون اكيد sexy بس احنا هنتكلم عن libsexy

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



المهم من بين الويدجات entry تراعى صحة الكلمات بإسم SpellEntry واخرى تسمح بإضافة ايكون على ال GtkEntry - --ملحوظة اقرا ملف فى مرجع GTK+ بإسم Migrating from SexyIconEntry to GtkEntry- والويدجت التالت هو UrlLabel
مثال بسيط
#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 كالتالى
ننشئ الصف الجديد MyWindow
class MyWindow(gtk.Window):
def __init__(self):
super(MyWindow, self).__init__()
self._init_comps()
بيرث gtk.Window ونستدعى فيه self._init_comps() المعرفة كالتالى
def _init_comps(self):
self.vbox=gtk.VBox(False, 0)
الصندوق الرأسى
self.lblurl=sexy.UrlLabel()
ال label الواعى عن ال link (ضعه فى a tag )
self.lblurl.set_markup('<a href="http://programming-fr34ks.net">PF</a>')
self.lblurl.connect("url-activated", self._on_urlclicked)
نربط الإشارة url-activated بالطريقة _on_urlclicked
self.vbox.pack_start(self.lblurl, False, False, 0)
نضيفه للصندوق الرأسى
self.spellentry=sexy.SpellEntry()
ننشئ SpellEntry -ليقوم بتصحيح الكلمات
self.vbox.pack_start(self.spellentry, False, False, 0)
نضيفه للصندوق الرأسى
self.iconentry=sexy.IconEntry()
ننشئ IconEntry يسمح بإضافة ايكون
ننشئ كائن gtk.Image
img.set_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_BUTTON)
نحصل على محتواه من ال gtk.STOCK_NEW
self.iconentry.set_icon(0, img)
نحدد مركز الأيكون
self.vbox.pack_start(self.iconentry, False, False, 0)
نضيفه للصندوق الرأسى
نضيف الصندوق الرأسى للنافذة
def _on_urlclicked(self, widget, url):
معالج الإشارة url-activated هيقوم بفتح تاب جديد فى المتصفح باللينك المختار
webbrowser.open_new_tab(url)