Bonjour,c'est encore moi, je suis toujours sur windows 7/ Python 3.3 / Tkinter/ SQLIte.
J'ai fais un code simplifié pour expliquer ce que je souhaiterai faire.
A partir de ma fenêtre Interface, je souhaite ouvrir une nouvelle fenêtre dialogue.
Ceci de deux manières :
- soit avec un bouton, dans cette exemple "Hello". Pour ça il me semble avoir compris.
- soit à partir du menu crée dans la class Interface en cliquant sur "Ouvrir" du menu "Fichier". Et c'est là que, arg! Comment que je fais ?
J'ai crois avoir compris qu'à partir de la construction d'un objet il n'était pas possible d'appeler une fonction qui n'est pas connue.
Mais après, je suis un peu dans l'exercice de la brasse indienne, si vous voyez ce que je veux dire...
interface.py
dialogue.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ## Importation de fonctions externes : from tkinter import * from tkinter.messagebox import * from dialogue import * ##################################################################################### ## Définition locale des classe et fonctions : class Interface(Tk): """ Interface de l'application avec la bese de données SQLite3 """ def __init__(self, parent, titre): Tk.__init__(self, parent) self.parent = parent self.protocol("WM_DELETE_WINDOW", self.quitter) self.title(titre) self.initialise() def initialise(self): " définit les éléments graphique " #------ Création barre Menus : Fichier, Outils, Aides ... ----- self.barMenu = Menu(self, tearoff = 0) self.fichier = Menu(self.barMenu, tearoff = 0) self.barMenu.add_cascade(label = "Fichier", underline = 0, menu = self.fichier) self.fichier.add_command(label = "Ouvrir", underline = 0, command = self.ouvrir) self.fichier.add_command(label = "Quitter", underline = 0, command = self.quitter) self.config(menu = self.barMenu) def ouvrir(self): pass def quitter(self): self.rep = askokcancel("Confirmation de fermeture", "Vous voulez quitter ?") if self.rep: self.destroy() ##################################################################################### ## Corps principal du programme def popDialog(): d = Dialog(racine, titre = "Module d'essai", offx = 100, offy = 100) def quitter(): q = Interface.quitter() if __name__ == "__main__" : racine = Interface(None, "Mon Application") cadreRacine = Frame(racine) cadreRacine.pack(padx = 150, pady =100) Button(cadreRacine, text = "Hello", command = popDialog).pack(padx = 10, pady = 10) racine.protocol("WM_DELETE_WINDOW", quitter) racine.mainloop() racine.destroy()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ##################################################################################### ## Importation de fonctions externes : from tkinter import * ##################################################################################### ## Définition locale de classe et fonctions : class Dialog(Toplevel): """ Définit une fenêtre de dialogue """ def __init__(self, conteneur, titre = None, center = False, offx = 300, offy = 300): Toplevel.__init__(self, conteneur) self.conteneur = conteneur self.protocol("WM_DELETE_WINDOW", self.annuler) self.transient(conteneur) #------ Titre hérité de Toplevel ------------------------ if titre : self.title(titre) self.initialise() def initialise(self): " Définit les éléments graphiques " cadre = Frame(self, height = 200, width = 200) cadre.pack(padx = 10, pady = 10) def annuler(self): self.destroy()
Partager