{"id":112,"date":"2010-08-31T13:46:00","date_gmt":"2010-08-31T13:46:00","guid":{"rendered":"http:\/\/e-ware.org\/blog\/?p=112"},"modified":"2010-08-31T13:46:00","modified_gmt":"2010-08-31T13:46:00","slug":"python-creare-entry-con-autocompletamento","status":"publish","type":"post","link":"http:\/\/e-ware.org\/blog\/python-creare-entry-con-autocompletamento\/","title":{"rendered":"Python: Creare entry con autocompletamento"},"content":{"rendered":"<p><a href=\"http:\/\/3.bp.blogspot.com\/_Tg1CIil2fDM\/TH0JacKOSBI\/AAAAAAAAAsw\/hDSfiHgLuMs\/s1600\/gtkentrycompletion.png\"><img decoding=\"async\" src=\"http:\/\/3.bp.blogspot.com\/_Tg1CIil2fDM\/TH0JacKOSBI\/AAAAAAAAAsw\/hDSfiHgLuMs\/s320\/gtkentrycompletion.png\" border=\"0\" alt=\"\"><\/a><\/p>\n<div><\/div>\n<div><span>L&#8217;autocompletamento \u00e8 sicuramente una delle funzionalit\u00e0 pi\u00f9 utili per velocizzare l&#8217;uso dei nostri software ai nostri utenti. Basti vedere quanto \u00e8 utile avere una lista delle possibili parole chiave ricercate quando utilizziamo un motore di ricerca.<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Vediamo come realizzare una semplice completition, per un entry, scritta in pygtk.<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span><\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><i><span>Analizziamo il codice saltando le funzioni tipiche e basilari del linguaggio per concentrarci su quelle di nostro interesse<\/span><\/i><span>.<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Dalla riga <\/span><b><span>9<\/span><\/b><span> alla riga <\/span><b><span>12<\/span><\/b><span> abbiamo creato la nostra finestra e ci abbiamo collocato all&#8217;interno la nostra entry. Nella riga <\/span><b><span>13<\/span><\/b><span> si nota l&#8217;istanza per una <\/span><b><span>completition<\/span><\/b><span>. Una <\/span><b><span>gtkCompletition<\/span><\/b><span> \u00e8 un oggetto ausiliare da usare in combinazione con una entry. Esso si occupa di creare il popup contenente le stringhe utili da poter poi gestire e mostrare all&#8217;interno dell&#8217;oggetto a cui esso \u00e8 connesso.  Nella riga successiva, <\/span><b><span>14<\/span><\/b><span>, c&#8217;\u00e8, invcece, l&#8217;istanza per una <\/span><b><span>liststore<\/span><\/b><span>. Essa non \u00e8 altro che un contenitore che si occuper\u00e0 di contenere dei dati del tipo definito dal costruttore. Nel nostro caso i dati al suo interno saranno stringhe poich\u00e8 al costruttore \u00e8 stato passato come argomento <\/span><b><span>str<\/span><\/b><span>. Le righe <\/span><b><span>15<\/span><\/b><span>&#8211;<\/span><b><span>17<\/span><\/b><span> rappresentano un ciclo for che si occupa di riempire la liststore, precedentemente creata, con un passaggio iterativo dei dati contenuti in una lista. Ci\u00f2 viene fatto poich\u00e8, come detto, la liststore \u00e8 costruita in modo tale da contenere stringhe e perci\u00f2 ogni elemento prelevato dalla nostra lista \u00e8 di per s\u00e8 una stringa se preso singolarmente. La riga <\/span><b><span>18<\/span><\/b><span> ci dice che la completition viene riempita con i dati presenti nella liststore mentre la <\/span><b><span>19<\/span><\/b><span> connette la completition al rispettivo metodo della nostra entry. La riga <\/span><b><span>20<\/span><\/b><span>, come facilmente intuibile, setta una caratteristica della completition, le colonne. la riga <\/span><b><span>21,<\/span><\/b><span> se analizzata con attenzione, mostra come un evento viene connesso alla entry in modo tale da richiamare, quando necessario, la funzione definita successivamente, <\/span><i><span>autocompletamento<\/span><\/i><span>. La riga <\/span><b><span>22<\/span><\/b><span> mostra il form creato.<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Passiamo all&#8217;analisi della funzione <\/span><i><span>autocompletamento<\/span><\/i><span>. Come si vede essa ha due paramenti, il tradizionale self e la entry alla quale la stessa viene applicata. La riga <\/span><b><span>26<\/span><\/b><span> trasferisce il testo contenuto nella entry in una variabile di tipo testo e di nome text, l&#8217;if alla riga <\/span><b><span>27<\/span><\/b><span> controlla che tale stringa sia piena. Se text contiene qualche carattere allora c&#8217;\u00e8 il controllo dell&#8217;if alla riga <\/span><b><span>28<\/span><\/b><span> che si occupa di ridefinire il contenuto della liststore con le stringhe filtrate con il contenuto della nostra entry. <\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Spero che l&#8217;analisi sia stata abbastanza dettagliata e possa essere utile a qualche sviluppatore. In caso di dubbi basta un commento.<\/span><\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;autocompletamento \u00e8 sicuramente una delle funzionalit\u00e0 pi\u00f9 utili per velocizzare l&#8217;uso dei nostri software ai nostri utenti. Basti vedere quanto \u00e8 utile avere una lista delle possibili parole chiave ricercate quando utilizziamo un motore di ricerca. Vediamo come realizzare una semplice completition, per un entry, scritta in pygtk. Analizziamo il codice saltando le funzioni tipiche [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[52,2,4,5,44],"tags":[],"class_list":["post-112","post","type-post","status-publish","format-standard","hentry","category-didattica","category-gnulinux","category-opencode","category-python","category-windows"],"views":1453,"_links":{"self":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/comments?post=112"}],"version-history":[{"count":0,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/112\/revisions"}],"wp:attachment":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/media?parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/categories?post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/tags?post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}