From 4cb0c6028e86e4e6eab8299fb1a7c46d336f974e Mon Sep 17 00:00:00 2001 From: vincent Date: Wed, 24 Jan 2018 19:36:27 +0100 Subject: [PATCH] integration interface graphique dans objet --- chaineTV.py | 117 +++++++++++++++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 52 deletions(-) diff --git a/chaineTV.py b/chaineTV.py index 4dd9aed..d0fef74 100644 --- a/chaineTV.py +++ b/chaineTV.py @@ -1,26 +1,65 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -from tkinter import * +from tkinter import * from bs4 import BeautifulSoup import urllib.request import json import sys -def click(): - print(value.get()) - try: - label2["text"] += data[value.get()]+"\r" - print(data[value.get()]) - except KeyError: - print("numero de chaine inconnue") - label2["text"] += "numero de chaine inconnue"+"\r" - value.set("") +class Interface: -def click_reset(): - print("exit") - fenetre.quit - label2["text"] = "" - fenetre.mainloop + def __init__(self): + self.data = load_jsonfile('chaine.json') + self.fenetre = Tk() + self.fenetre.title("recherche de chaine") + self.value = StringVar() + self.label = Label(self.fenetre, text="entrer numero de chaine") + self.entree = Entry(self.fenetre, textvariable=self.value, width=30) + self.frame = Frame(self.fenetre) + self.label2 = Label(self.fenetre, text="") + self.bouton_update_base = Button( + self.fenetre, text="update la base de chaine", command=self.click_update) + self.bouton = Button(self.frame, text="OK", command=self.click) + self.reset = Button(self.frame, text="reset", command=self.click_reset) + self.label.pack() + self.entree.pack() + self.entree.focus_set() + self.frame.pack() + self.bouton.pack(side=LEFT) + self.reset.pack(side=RIGHT) + self.label2.pack() + self.bouton_update_base.pack() + self.fenetre.bind("", self.enter) + self.fenetre.bind("", self.eventreset) + + + def enter(self,evt): + self.click() + + def eventreset(self,evt): + self.click_reset() + + def mainloop(self): + self.fenetre.mainloop() + + def click(self): + print(self.value.get()) + try: + self.label2["text"] += self.data[self.value.get()]+"\r" + print(self.data[self.value.get()]) + except KeyError: + print("numero de chaine inconnue") + self.label2["text"] += "numero de chaine inconnue"+"\r" + self.value.set("") + + def click_reset(self): + print("exit") + self.fenetre.quit + self.label2["text"] = "" + self.fenetre.mainloop + + def click_update(self): + parsechaine() + self.data = load_jsonfile('chaine.json') + self.label2["text"] += "update chaine done"+"\r" @@ -36,6 +75,8 @@ def RepresentsInt(s): return False except TypeError: return False + + def parsechaine(): URL = 'https://fr.wikipedia.org/wiki/Liste_des_cha%C3%AEnes_de_Canal' liste_chaine = {} @@ -59,50 +100,22 @@ def parsechaine(): print(json.dumps(liste_chaine, indent=4)) with open('chaine.json', 'w', encoding='utf-8') as f: json.dump(liste_chaine, f, indent=4) - data = load_jsonfile('chaine.json') - label2["text"] += "update chaine done"+"\r" - -def enter(evt): - click() - -def eventreset(evt): - click_reset() -data = load_jsonfile('chaine.json') -fenetre = Tk() -fenetre.title("recherche de chaine") -value = StringVar() + +interface = Interface() if len(sys.argv) > 1: arg = True else: - value.set("") + interface.value.set("") arg = False -label = Label(fenetre, text="entrer numero de chaine") -entree = Entry(fenetre, textvariable=value, width=30) -frame = Frame(fenetre) -label2 = Label(fenetre, text="") -bouton_update_base = Button(fenetre, text="update la base de chaine", command=parsechaine) -bouton = Button(frame, text="OK", command=click) -reset = Button(frame, text="reset", command=click_reset) - -label.pack() -entree.pack() -entree.focus_set() -frame.pack() -bouton.pack(side=LEFT) -reset.pack(side=RIGHT) -label2.pack() -bouton_update_base.pack() -fenetre.bind("", enter) -fenetre.bind("", eventreset) if arg == True: for i in sys.argv[1:]: - value.set(i) - click() - value.set("") + interface.value.set(i) + interface.click() + interface.value.set("") -fenetre.mainloop() +interface.mainloop()