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
| class Gae(gtk.Window): # Hérite de Window -> Gae est donc une Window et a toute ses propriétés et méthodes
def __init__(self):
gtk.Window.__init__(self) # On appel le constructeur de Window
# On appel des méthodes de Gae (donc de Window)
self.set_position(gtk.WINDOW_TOPLEVEL)
self.set_title("Wiener System Control")
self.set_default_size(800,600)
self.set_position(gtk.WIN_POS_CENTER)
self.set_border_width(5)
self.connect("delete_event", lambda w,e: gtk.main_quit()) # Appel de gtk.main_quit() lors de la fermeture de la fenetre
# On crée les objets qui seront ajoutés dans Gae, ils sont créés dans l'init, donc une seule fois
vbox= gtk.VBox()
ping=gtk.Button("PING")
ping.connect("clicked", self.Ping_wiener, None)
close_button = gtk.Button(stock=gtk.STOCK_CLOSE)
close_button.connect("clicked", lambda w,e: gtk.main_quit(), None)
self.textview = gtk.TextView()
self.textview.set_cursor_visible(False)
self.textview.set_wrap_mode(gtk.WRAP_CHAR)
# Organisation des widgets
vbox.pack_start(ping, False, False, 0)
vbox.pack_start(self.textview, True, True, 10)
vbox.pack_end(close_button, False, False, 0)
self.add(vbox)
self.show_all()
def Ping_wiener(self, widget, data):
# Callback de mise à jour du textview
buffertexte = self.textview.get_buffer()
lPing=os.popen('ping -c 4 192.168.124.128','r')
sLigne = lPing.read()
for ligne in sLigne :
buffertexte.insert_at_cursor(ligne)
def boucle():
#*démarrer la boucle évènementielle
gtk.main()
if __name__ == '__main__':
Gae()
boucle() |
Partager