Tkinter est une librairie basique mais très simple d'utilisation pour construire rapidement des interfaces graphiques avec Python.
Le style de widgets n'est pas très esthétique (question de goût) mais ça reste tout de même une bonne base pour commencer dans le développement d'interface graphique (GUI).
Ceci peut se résumer avec l'outil apt-get en saisissant dans un terminal les commandes suivantes:
sudo apt-get install python-tk python-imaging-tk python3-tk
Pour commencer, regardez et essayez de comprendre la structure du code :
#!/usr/bin/env python # -*- coding: Latin-1 -*- # # Programme Tkinter.py # Démonstration du language from Tkinter import * #Pour python3.x Tkinter devient tkinter class ApplicationBasic(): '''Application principale''' def __init__(self): '''constructeur''' self.fen = Tk() self.fen.title('Tkinter') self.bou_action = Button(self.fen) self.bou_action.config(text='Action', command=self.action) self.bou_action.pack() self.bou_quitter = Button(self.fen) self.bou_quitter.config(text='Quitter', command=self.fen.destroy) self.bou_quitter.pack() def run(self): self.fen.mainloop() def action(self): '''Action sur un bouton''' self.lab = Label(self.fen) self.lab.config(text='Bravo!!!') self.lab.pack() if __name__ == '__main__': app = ApplicationBasic() app.run()
chaque partie correspond à :
from Tkinter import *
class ApplicationBasic():
def __init__(self):
self.fen = Tk()
self.fen.title('Tkinter')
self.bou_action = Button(self.fen)
self.bou_action.config(text='Action', command=self.action)
self.bou_action.pack()
ef action(self) : '''Action sur un bouton''' self.lab = Label(self.fen) self.lab.config(text='Bravo!!!') self.lab.pack()
self.bou_quitter = Button(self.fen) self.bou_quitter.config(text='Quitter', command=self.fen.destroy) self.bou_quitter.pack()
self.fen.mainloop()
app = ApplicationBasic()
Enregistrez votre fichier source avec une extension .py puis lancez-le depuis un terminal en saisissant la commande suivante:
python 'fichier.py'
La structure du code est un peu différente car j'utilise une classe.
#!/usr/bin/env python # -*- coding: utf-8 -*- # # PyConnect.py # # Vérification de la connexion internet avec interface et ping # #Importation des librairies nécéssaire au bon fonctionnement du programme. #Tkinter pour l'interface graphique #urllib pour les schémas internet #os pour dialoguer avec le systeme from Tkinter import * import urllib as url import os class Application(Frame): def __init__(self,parent): Frame.__init__(self) self.parent = parent self.etat = Label(self, text='',font='Times 28 italic bold') self.etat.grid(row=0, column=0, columnspan=4, sticky=NSEW) self.lab_iface = Label(self, text='Interfaces:',font='Times',underline=0) self.lab_iface.grid(row=1,column=0,sticky=NSEW) self.iface = Text(self, font='Times 10') self.iface.grid(row=2, column=0, sticky=NSEW) self.lab_ping = Label(self, text='Ping:',font='Times',underline=0) self.lab_ping.grid(row=1,column=2,sticky=NSEW) self.ping = Text(self, font='Times',state='disabled') self.ping.grid(row=2, column=1, columnspan=3, sticky=NSEW) self.recharger = Button(self, text='Recharger', font='Times', command=self.checkIface) self.recharger.grid(row=3, column=0, sticky=NSEW) self.quitter = Button(self, text='Quitter', font='Times', command=self.leave) self.quitter.grid(row=3, column=1, columnspan=3,sticky=NSEW) self.checkIface() def checkIface(self): self.iface.config(state='normal') self.iface.delete(1.0,END) self.listing = os.popen('ifconfig', 'r').read() self.iface.insert(END, self.listing) self.iface.config(state='disabled') self.checkInternet() def checkInternet(self): try: url.urlopen('http://www.google.com') self.etat.config(text='Connexion internet active') self.checkPing() except: self.etat.config(text='Connexion internet inactive') self.ping.config(state='normal') self.ping.delete(1.0,END) self.ping.insert(END, 'Ping impossible...') self.ping.config(state='disabled') def checkPing(self): self.ping.config(state='normal') self.ping.delete(1.0,END) c = 3 while c != 0: self.pingPacket = os.popen('ping -c 1 google.com').read() self.ping.insert(END, self.pingPacket+'\n') self.parent.after(1,self.parent.update()) c = c-1 self.ping.config(state='disabled') def leave(self): quit() if __name__ == '__main__': fen = Tk() fen.title('Connexion Internet') fen.resizable(False,False) app = Application(fen) app.grid(row=0, column=0, sticky=NSEW) fen.mainloop()
Contributeurs:Boileau jonathan – Mail: couverture.jonathan.b@gmail.com