{"id":537,"date":"2009-06-12T18:31:39","date_gmt":"2009-06-12T16:31:39","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=537"},"modified":"2009-06-12T19:02:16","modified_gmt":"2009-06-12T17:02:16","slug":"un-navigateur-en-quelques-lignes-de-python","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2009\/06\/un-navigateur-en-quelques-lignes-de-python\/","title":{"rendered":"Un navigateur en quelques lignes de Python"},"content":{"rendered":"<p>Avec un langage comme Python et Webkit, il est extr\u00eamement facile de cr\u00e9er une application qui affiche un site internet. Jugez-en vous-m\u00eame.<br \/>\nLe programme ci-dessous, en 9 lignes de code, affiche dans une une fen\u00eatre une page web dont l&rsquo;adresse est sp\u00e9cifi\u00e9e dans le programme:<\/p>\n<pre class=\"codesource\">\r\n<span class=\"codecomment\">#!\/usr\/bin\/env&nbsp;python&nbsp;&nbsp;\r\n<\/span>\r\n<span class=\"reservedname\">import<\/span>&nbsp;gtk&nbsp;&nbsp;\r\n<span class=\"reservedname\">import<\/span>&nbsp;webkit&nbsp;&nbsp;\r\n<span class=\"reservedname\">import<\/span>&nbsp;gobject&nbsp;&nbsp;\r\n\r\ngobject.threads_init()&nbsp;&nbsp;\r\nwindow&nbsp;=&nbsp;gtk.Window()\r\nwindow.set_default_size(800,&nbsp;600)\r\nwindow.connect(<span class=\"quotedstring\">\"destroy\"<\/span>,&nbsp;<span class=\"reservedname\">lambda<\/span>&nbsp;a:&nbsp;gtk.main_quit())&nbsp;\r\nbrowser&nbsp;=&nbsp;webkit.WebView()&nbsp;&nbsp;\r\nbrowser.open(<span class=\"quotedstring\">\"http:\/\/linux.leunen.com\"<\/span>)&nbsp;&nbsp;\r\nwindow.add(browser)&nbsp;&nbsp;\r\nwindow.show_all()&nbsp;&nbsp;\r\ngtk.main()&nbsp;&nbsp;\r\n<\/pre>\n<p>On peut am\u00e9liorer l\u00e9g\u00e8rement le programme pour qu&rsquo;il ressemble un peu plus \u00e0 un navigateur en rajoutant dans le haut de la fen\u00eatre une barre d&rsquo;adresse dans laquelle une URL peut \u00eatre tap\u00e9e. Lorsque vous appuierez sur la touche <em>Enter<\/em>, la page sera affich\u00e9e dans la zone inf\u00e9rieure de la fen\u00eatre. N&rsquo;oubliez pas de mettre le <em>http:\/\/<\/em> devant l&rsquo;adresse du site que vous voulez visualiser:<\/p>\n<pre class=\"codesource\">\r\n<span class=\"codecomment\">#!\/usr\/bin\/env&nbsp;python&nbsp;&nbsp;\r\n<\/span><span class=\"codecomment\">#&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-\r\n<\/span>\r\n<span class=\"reservedname\">import<\/span>&nbsp;gtk&nbsp;&nbsp;\r\n<span class=\"reservedname\">import<\/span>&nbsp;gobject&nbsp;&nbsp;\r\n<span class=\"reservedname\">import<\/span>&nbsp;webkit\r\n\r\n<span class=\"codecomment\">#&nbsp;Fonction&nbsp;appel\u00e9e&nbsp;lorsqu'on&nbsp;appuie&nbsp;sur&nbsp;enter&nbsp;dans&nbsp;la&nbsp;barre&nbsp;d'adresse\r\n<\/span><span class=\"reservedname\">def<\/span>&nbsp;browse(widget):\r\n&nbsp;&nbsp;<span class=\"codecomment\">#&nbsp;On&nbsp;affiche&nbsp;l'URL&nbsp;contenue&nbsp;dans&nbsp;la&nbsp;barre&nbsp;d'adresse\r\n<\/span>&nbsp;&nbsp;browser.open(widget.get_text())&nbsp;\r\n\r\ngobject.threads_init()\r\n\r\n<span class=\"codecomment\">#&nbsp;Cr\u00e9ation&nbsp;de&nbsp;la&nbsp;fen\u00eatre\r\n<\/span>window&nbsp;=&nbsp;gtk.Window()\r\n<span class=\"codecomment\">#&nbsp;On&nbsp;d\u00e9finit&nbsp;sa&nbsp;taille&nbsp;par&nbsp;d\u00e9faut\r\n<\/span>window.set_default_size(800,&nbsp;600)\r\n<span class=\"codecomment\">#&nbsp;Ex\u00e9cute&nbsp;gtk.main_quit()&nbsp;quand&nbsp;on&nbsp;clique&nbsp;sur&nbsp;la&nbsp;croix\r\n<\/span>window.connect(<span class=\"quotedstring\">\"destroy\"<\/span>,&nbsp;<span class=\"reservedname\">lambda<\/span>&nbsp;a:&nbsp;gtk.main_quit())&nbsp;\r\n\r\n<span class=\"codecomment\">#&nbsp;La&nbsp;barre&nbsp;d'adresse&nbsp;et&nbsp;la&nbsp;zone&nbsp;o\u00f9&nbsp;s'affiche&nbsp;la&nbsp;page&nbsp;internet\r\n<\/span><span class=\"codecomment\">#&nbsp;sont&nbsp;plac\u00e9es&nbsp;dans&nbsp;une&nbsp;bo\u00eete&nbsp;verticale\r\n<\/span>vbox&nbsp;=&nbsp;gtk.VBox(False,0)\r\nwindow.add(vbox)\r\nadd&nbsp;=&nbsp;gtk.Entry()\r\n<span class=\"codecomment\">#&nbsp;la&nbsp;fonction&nbsp;browse&nbsp;est&nbsp;appel\u00e9e&nbsp;quand&nbsp;on&nbsp;tape&nbsp;sur&nbsp;Enter\r\n<\/span>add.connect(<span class=\"quotedstring\">\"activate\"<\/span>,&nbsp;browse)\r\nvbox.pack_start(add,&nbsp;False,&nbsp;True,&nbsp;0)\r\n\r\n<span class=\"codecomment\">#&nbsp;Initialisation&nbsp;de&nbsp;l'objet&nbsp;webkit\r\n<\/span>browser&nbsp;=&nbsp;webkit.WebView()\r\nvbox.pack_start(browser)\r\n\r\nwindow.show_all()&nbsp;&nbsp;\r\ngtk.main()&nbsp;&nbsp;\r\n<\/pre>\n<p>Les codes sources de ces deux exemples peuvent \u00eatre t\u00e9l\u00e9charg\u00e9s ici:<br \/>\n<a href=\"http:\/\/www.leunen.com\/download\/browse.zip\">exemple 1<\/a><br \/>\n<a href=\"http:\/\/www.leunen.com\/download\/browse2.zip\">exemple 2<\/a><\/p>\n<p>Et voici une capture d&rsquo;\u00e9cran qui vous montre \u00e0 quoi \u00e7a ressemble:<\/p>\n<p><a href=\"http:\/\/linux.leunen.com\/wp-content\/uploads\/2009\/06\/Capture-browse2.png\"><img loading=\"lazy\" src=\"http:\/\/linux.leunen.com\/wp-content\/uploads\/2009\/06\/Capture-browse2.png\" alt=\"browse2.py\" title=\"browse2\" width=\"402\" height=\"313\" class=\"center\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Avec un langage comme Python et Webkit, il est extr\u00eamement facile de cr\u00e9er une application qui affiche un site internet. Jugez-en vous-m\u00eame. Le programme ci-dessous, en 9 lignes de code, affiche dans une une fen\u00eatre une page web dont l&rsquo;adresse est sp\u00e9cifi\u00e9e dans le programme: #!\/usr\/bin\/env&nbsp;python&nbsp;&nbsp; import&nbsp;gtk&nbsp;&nbsp; import&nbsp;webkit&nbsp;&nbsp; import&nbsp;gobject&nbsp;&nbsp; gobject.threads_init()&nbsp;&nbsp; window&nbsp;=&nbsp;gtk.Window() window.set_default_size(800,&nbsp;600) window.connect(\u00ab\u00a0destroy\u00a0\u00bb,&nbsp;lambda&nbsp;a:&nbsp;gtk.main_quit())&nbsp; browser&nbsp;=&nbsp;webkit.WebView()&nbsp;&nbsp; browser.open(\u00ab\u00a0http:\/\/linux.leunen.com\u00a0\u00bb)&nbsp;&nbsp; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/537"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=537"}],"version-history":[{"count":18,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/537\/revisions"}],"predecessor-version":[{"id":558,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/537\/revisions\/558"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}