Bonjour à tous,
Je réalise une interface pour ma BdD de citations (Auteurs, Citations...)
Je souhaite lancer au moyen d'un menu Tkinter un script python qui ouvrira une nouvelle fenêtre avec les champ de saisie pour enregistrer les auteurs.
Mes fichiers :
frontend.py pour mon interface graphique.
frontend_auteur.py pour la saisie des Auteurs
main.py pour les instruction d'écriture dans ma BdD.
Et je n'arrive pas à lancer le script "frontend_auteur.py"
J'ai le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [Running] python -u "c:\DevPython_Santiago\menesis_database_projet-02\frontend.py" Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\charlelie\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) File "c:\DevPython_Santiago\menesis_database_projet-02\frontend.py", line 9, in runauteur run1 = subprocess.run(["start python frontend_auteur.py"]) NameError: name 'subprocess' is not defined
Voici donc mes fichiers :
frontend.py
frontend_auteur.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68 # -*- coding: utf-8 -*- from tkinter import* from main import* # syntaxe pour appeller un autre fichier py + fonction from tkinter import font from subprocess import*# Module permettant de lancer des programmes "Run" defrunauteur (): run1 = subprocess.run(["start python frontend_auteur.py"]) #================== Création du constructeur graphique ================================= fenetre_pce =Tk() # Création d'un constructeur #======== Dimensionnement de la fenetre_pce ================================================= # Fonction centrer fenêtre screen_x =int(fenetre_pce.winfo_screenwidth()) screen_y =int(fenetre_pce.winfo_screenheight()) #fenetre_pce_x = 1600 #fenetre_pce_y = 900 fenetre_pce_x =1260 fenetre_pce_y =720 pos_x = (screen_x //2) - (fenetre_pce_x //2) pos_y = (screen_y //2) - (fenetre_pce_y //2) # Attention le 1er facteur est x ensuite + geo ="{}x{}+{}+{}".format(fenetre_pce_x, fenetre_pce_y, pos_x, pos_y) fenetre_pce.geometry(geo) fenetre_pce.resizable(width=False,height=False) # Fenêtre modifiable True or False #============= FENETRE FIN ============================================================== fenetre_pce.iconbitmap("img/search.ico") ### Changement de l'icone de la fenêtre [l'icone doit être placé dans le répertoire racine de l'application ou un autre répertoire img/...] #=================== Création d'un menu ================================================= menubar = Menu(fenetre_pce,borderwidth=20, relief=GROOVE) # Création de la FRAME pour placer les menus dans le constructeur ==> fenetre =Tk() # Création d'un constructeur menuFichier = Menu(menubar, tearoff=0) # Création du menu "Fichier" menubar.add_cascade(label="Fichier", menu=menuFichier) # Rattachement des commandes au menu "Fichier" menuFichier.add_command(label="Créer") menuFichier.add_command(label="Ouvrir",) menuFichier.add_command(label="Editer") menuFichier.add_separator() # Ligne de séparation menuFichier.add_command(label="Quitter", command=fenetre_pce.quit) menuEdition = Menu(menubar, tearoff=0) menubar.add_cascade(label="Edition", menu=menuEdition) menuEdition.add_command(label="Couper") menuEdition.add_command(label="Copier") menuEdition.add_command(label="Coller") menuEdition.add_command(label="Créer") menuAuteur = Menu(menubar, tearoff=0) menubar.add_cascade(label="Auteur", menu=menuAuteur) menuAuteur.add_command(label="Créer", command=runauteur) menuAide = Menu(menubar, tearoff=0) menubar.add_cascade(label="Aide", menu=menuAide) menuAide.add_command(label="A propos") #================== FERMETURE DES BOUCLES ============================================== fenetre_pce.config(menu=menubar) # Configuration et print menu fenetre_pce.mainloop() # Boucle principale
main.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
55 # -*- coding: utf-8 -*- from tkinter import* from main import*# syntaxe pour appeller un autre fichier py + fonction from tkinter import font #================== Création du constructeur graphique ================================= fenetre_pce =Tk() # Création d'un constructeur #======== Dimensionnement de la fenetre_pce ================================================= # Fonction centrer fenêtre screen_x =int(fenetre_pce.winfo_screenwidth()) screen_y =int(fenetre_pce.winfo_screenheight()) fenetre_pce_x =800 fenetre_pce_y =600 pos_x = (screen_x //2) - (fenetre_pce_x //2) pos_y = (screen_y //2) - (fenetre_pce_y //2) # Attention le 1er facteur est x ensuite + geo ="{}x{}+{}+{}".format(fenetre_pce_x, fenetre_pce_y, pos_x, pos_y) fenetre_pce.geometry(geo) fenetre_pce.resizable(width=False,height=False) # Fenêtre modifiable True or False #============= FENETRE FIN ============================================================== fenetre_pce.iconbitmap("img/search.ico") ### Changement de l'icone de la fenêtre [l'icone doit être placé dans le répertoire racine de l'application ou un autre répertoire img/...] # Champs de saisie ======================== labelAuteur = Label(fenetre_pce, text="Auteur", font=("Arial", 12,"bold")) labelAuteur.place(x=30,y=38) entreeAuteur = Entry (fenetre_pce, width="50",font=("Arial", 12,"bold")) entreeAuteur.place(x=30,y=65) labelInfo = Label(fenetre_pce, text="Information", font=("Arial", 12,"bold")) labelInfo.place(x=30,y=100) entreeInfo = Text(fenetre_pce, width="90", height="10") entreeInfo.place(x=30,y=127) ##### # Vous devez transmettre à la fonction Text.get() un index de début et de fin indiquant la partie du texte que vous souhaitez Text.get() dans le widget Text . ##### boutonEnregistrer = Button(fenetre_pce, text='Enregistrer', command=lambda : enregister(entreeAuteur.get(), entreeInfo.get('1.0', END))) boutonEnregistrer.place(x=700,y=400) #================== FERMETURE DES BOUCLES ============================================== fenetre_pce.mainloop() # Boucle principale
merci beaucoup par avance pour votre aide.
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 # -*- coding: utf-8 -*- import sqlite3 #=================== Insertion des données dans database ================================================ defenregister(auteur_auteur, auteur_info): try: connection = sqlite3.connect('mnesis.db') # Connection à la BdD cursor = connection.cursor() # création du curseur new_auteur = (cursor.lastrowid, auteur_auteur, auteur_info) # Récupération des valeurs des boutons cursor.execute('INSERTINTO tb_auteur VALUES(?,?,?)',new_auteur) # les (?,?,?) représentent les valeurs qui sont renseignées dans la variable new_auteur exceptExceptionas e: print("ERREUR",e) connection.rollback() finally: cursor.close() connection.commit() # Valider l'enregistrement dans la database connection.close() ## Fermeture de la connection
Partager