growth hormone
dic
22
2008

IPFinder: il mio primo programma in Python + GTK

IPFinder è un programmino scritto da me, per diletto, che mostra il proprio IP di LAN e l’IP con cui si esce in Internet (quello del router tanto per capirci).

IPFinder

Leggendo, come di consueto, le ultime novità dal mondo del’informatica, sono capitato su questo articolo, ed in particolare su questo blog, ed ho detto: “PyGTK, perchè no?” E mi sono messo a sviluppare questo piccolo programma.

Esso è stato creato in linguaggio Python con le librerie grafiche GTK e PyGTK, scritto con Netbeans e disegnato con Glade.

In breve:

  • Python è un linguaggio di programmazione
  • GTK sono delle librerie grafiche (quelle con cui è stato scritto Gnome tanto per capirci)
  • PyGTK sono delle librerie per interfacciare Python e GTK
  • Netbeans è un IDE, ovvero un editor per scrivere codice, e non solo
  • Glade serve per disegnare le interfacce grafiche basate su GTK

Cosa fa questo programma? Mostra l’ip della propria scheda di rete e l’ip che sia visto da Internet.

Ecco il listato di IPFinder.py:

?View Code PYTHON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env  python
 
__author__="ezhno"
__date__ ="$22-dic-2008 18.55.30$"
 
#if __name__ == "__main__":
#    print "Hello";
 
# Carico le librerie necessarie
 
try:
    import gtk
    import gtk.glade
    import pygtk
except:
    print "Devi installare le librerie GTK di Python"
 
import os.path
import re
import urllib
import socket
import sys
 
pygtk.require("2.0")
 
# Funzione che riempie le caselle di testo
def riempi_campi():
    entry1.set_text(get_local_ip())
    entry2.set_text(get_internet_ip())
 
# Funzione che restituisce l'ip locale
def get_local_ip(remote = ('www.python.org',80)):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(remote)
    except:
        return "Problema di connessione."
    ip, localport = s.getsockname()
    s.close()
    return ip;
 
# Funzione che restituisce l'ip internet
def get_internet_ip():
    try:
        f = urllib.urlopen('http://checkip.dyndns.org')
        s = f.read()
    except:
        return "Problema di connessione."
    m = re.search("\d+\.\d+\.\d+\.\d+", s)
    return m.group(0)
 
# Funzione per non lasciare appeso python quando si chiude la finestra
def on_window1_destroy(widget, data=None):
	gtk.main_quit()
 
# Funzione per aggiornare le caselle di testo
def on_button1_clicked(widget, data=None):
    riempi_campi()
 
# Binding tra eventi della parte grafica e le funzioni
segnali = {
  'on_window1_destroy': on_window1_destroy,
  'on_button1_clicked': on_button1_clicked
}
 
# Caricamento interfaccia grafica
try:
    gladeFile = gtk.glade.XML('/'.join([os.path.dirname(sys.argv[0]), 'IPFinder.glade']))
except:
    print "Impossibile aprire il file 'IPFinder.galde'"
    sys.exit(1)
 
window1 = gladeFile.get_widget('window1')
entry1 = gladeFile.get_widget('entry1')
entry2 = gladeFile.get_widget('entry2')
button1 = gladeFile.get_widget('button1')
 
# Prima lettura degli ip
riempi_campi()
 
# Binding automatico tra eventi della parte grafica e le funzioni
gladeFile.signal_autoconnect(segnali)
 
# Visualizzazione
if window1:
	window1.show()
	gtk.main()

Lo si scarica da qui.

Estraetelo in una cartella e lanciatelo con:

1
python IPFinder.py

Lo so, non serve a nulla, è scritto male, ma sono fiero di aver creato un qualcosa con strumenti offerti gratuitamente.

Condividi con:
  • email
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Twitter
  • Facebook
  • LinkedIn
  • Live
  • MySpace
  • Wikio IT

Nessun articolo simile.

Written by Andrea Boscolo in: Prove | Tag:, , , , , , , ,

5 commenti »

  • loris scrive:

    e bravo ezhno.
    non ti buttar giu’ si inzia sempre cosi.
    continua cosi vedrai che arriverai anche tu a scrivere del buon
    codice

    ps: ho provato ad istallare netbeans lo trovo bellino

    ciao Loris by Velug

    ReplicaReplica
  • bigshot scrive:

    riga 68: gladeFile = gtk.glade.XML(”.join([os.path.dirname(sys.argv[0]), ‘IPFinder.glade’]))
    sennò non trova il file glade

    e alla riga dopo hai scritto “galde” :P

    auguri per il proseguimento :D

    ReplicaReplica
  • bigshot scrive:

    vabbè qua wordpress trasforma i due apici in virgolette…
    comunque ho tolto la prima slash ;)

    ReplicaReplica
  • Muflone scrive:

    carino il programma
    grazie del link, per adesso il blog di python è fermo, mi sto dedicando maggiormente a quello di ubuntu

    ciao

    ReplicaReplica
  • Antonio scrive:

    Grazie, mi serve per un programma che sto facendo. Lo studio del tuo programmino mi aiuterà molto.
    Bravo!

    ReplicaReplica

RSS feed for comments on this post. TrackBack URL


Leave a Reply

Design by Joe Fischler for Generics