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
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
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
 
# -*- 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
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
 
# -*- 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
merci beaucoup par avance pour votre aide.