Alerte en cas de champs vide en Python

Résolu
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 - Modifié le 31 janv. 2024 à 16:39
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 - 31 janv. 2024 à 20:54

Bonjour,

Environnement : Python 3.12

Niveau : Debutant

Je n'arrive pas a faire renvoyer par l'application de l'alerte ( messagebox)

en cas ou le champs de saisie (Entry) est vide.

Merci d'avance pour votre aide.

Mon code est comme suite (Voir la ligne 50 et plus)

#Definir source des objets
import sys
import tkinter
import tkinter.ttk
from tkinter import *
import messagebox
import customtkinter


# Se connecter avec la Base des Donnees
import mariadb

try:
    conn = mariadb.connect(
    user="mohammed",
    password="hello",
    host="127.0.0.1",
    port=3306,
    database="BDGestion"
)
except mariadb.Error as err:
    print(f"erreur de connexion avec la base de donnees : {err}")
    sys.exit(1)

#Recuperation curseur
cur = conn.cursor()

#Creation de la fenetre principale
Fenetre=Tk()

#Creation de Sous Fenetre

#Sous fenetre = Creation de societe
def Afficher_CreationSte():
    Afficher_CreationSte=tkinter.Toplevel()
    Afficher_CreationSte.title("Creation de Societe")
    Afficher_CreationSte.config(background="#E4DEBE")
    Afficher_CreationSte.iconbitmap("Champs.ico")
    Afficher_CreationSte.geometry('700x350')
    Afficher_CreationSte.minsize(width=400,height=200)

    #Creation de Frame
    maFrame=tkinter.LabelFrame(Afficher_CreationSte,background="#E4DEBE",relief="flat")
    maFrame.grid(padx=20,pady=10)

    maFrame.frame=customtkinter.CTkFrame(maFrame,corner_radius=10)

    #Evenemets
    #Ajouter
    def Ajouter_ZoneSte():
        if Zone_RaisonSociale.get()==None:
            messagebox.showinfo("Information", message="Veuillez saisir la Raison Sociale")

    #Annuler
    def Annuler_ZoneSte():
        Zone_RaisonSociale.delete(0,END)
        Zone_Capital.delete(0,END)
        Zone_IFiscal.delete(0, END)
        Zone_Affiliation.delete(0, END)
        Zone_Tel1.delete(0, END)
        Zone_Tel2.delete(0, END)
        Zone_Email.delete(0, END)
        Zone_Adresse.delete(0, END)
        Zone_RaisonSociale.focus_set()

    Titre_RaisonSociale = tkinter.Label(maFrame, text="Raison Sociale",background="#E4DEBE")
    Titre_RaisonSociale.grid(row=0,column=1,ipadx=10,sticky="e")

    Zone_RaisonSociale = tkinter.Entry(maFrame, background="#E4DEBE")
    Zone_RaisonSociale=customtkinter.CTkEntry(maFrame,corner_radius=10,width=450)
    Zone_RaisonSociale.focus_set()
    Zone_RaisonSociale.grid(row=0,column=2,sticky="w")

    Statut_Societe=tkinter.Label(maFrame,text="Statut Juridique",background="#E4DEBE")
    Statut_Societe.grid(row=1,column=1,ipadx=10,sticky="e")

    Liste_Statut=["S.A","S.A.R.L","S.N.C","S.F"]
    #Zone_Statut=tkinter.ttk.Combobox(maFrame,values=Liste_Statut,background="#E4DEBE")
    Zone_Statut = customtkinter.CTkComboBox(maFrame, values=Liste_Statut,corner_radius=10)
    Zone_Statut.grid(row=1,column=2,sticky="w")

    Titre_Capital=tkinter.Label(maFrame,text="Capital Social",background="#E4DEBE")
    Titre_Capital.grid(row=2,column=1,ipadx=10,sticky="e")

    Zone_Capital=tkinter.Entry(maFrame,background="#E4DEBE",width=23)
    Zone_Capital=customtkinter.CTkEntry(maFrame,corner_radius=10)
    Zone_Capital.grid(row=2,column=2,sticky="w")

    Titre_Ifiscal = tkinter.Label(maFrame, text="Identifiant Fiscal", background="#E4DEBE")
    Titre_Ifiscal.grid(row=3,column=1,ipadx=10 ,sticky="e")

    Zone_IFiscal=tkinter.Entry(maFrame,background="#E4DEBE",width=23)
    Zone_IFiscal=customtkinter.CTkEntry(maFrame,corner_radius=10)
    Zone_IFiscal.grid(row=3,column=2,sticky="w")

    Titre_Affiliation = tkinter.Label(maFrame, text="Affiliation CNSS", background="#E4DEBE")
    Titre_Affiliation.grid(row=4, column=1, ipadx=10, sticky="e")

    Zone_Affiliation = tkinter.Entry(maFrame, background="#E4DEBE",width=23)
    Zone_Affiliation=customtkinter.CTkEntry(maFrame,corner_radius=10)
    Zone_Affiliation.grid(row=4, column=2, sticky="w")

    Titre_Tel = tkinter.Label(maFrame, text="Telephone", background="#E4DEBE")
    Titre_Tel.grid(row=5, column=1, ipadx=10, sticky="e")

    Zone_Tel1 = tkinter.Entry(maFrame, background="#E4DEBE",width=23)
    Zone_Tel1=customtkinter.CTkEntry(maFrame,corner_radius=10)
    Zone_Tel1.grid(row=5, column=2, sticky="w")

    Zone_Tel2 = tkinter.Entry(maFrame, background="#E4DEBE",width=23)
    Zone_Tel2=customtkinter.CTkEntry(maFrame,corner_radius=10)
    Zone_Tel2.grid(row=6, column=2,sticky="w")

    Titre_Email = tkinter.Label(maFrame, text="E-Mail", background="#E4DEBE")
    Titre_Email.grid(row=7, column=1, ipadx=10, sticky="e")

    Zone_Email = tkinter.Entry(maFrame, background="#E4DEBE",width=23)
    Zone_Email=customtkinter.CTkEntry(maFrame,corner_radius=10)
    Zone_Email.grid(row=7, column=2, sticky="w")

    Titre_Adresse = tkinter.Label(maFrame, text="Adresse", background="#E4DEBE")
    Titre_Adresse.grid(row=8, column=1, ipadx=10, sticky="e")

    Zone_Adresse = tkinter.Text(maFrame, background="#E4DEBE")
    Zone_Adresse=customtkinter.CTkEntry(maFrame,corner_radius=10, width=550,height=40)
    Zone_Adresse.grid(row=8, column=2, sticky="w")

    BoutSte_Ajouter = customtkinter.CTkButton(maFrame,text="Ajouter", corner_radius=10, width=220,command=Ajouter_ZoneSte)
    BoutSte_Ajouter.grid(row=9,column=2,sticky="w",padx=5,pady=5,ipadx=10,ipady=10)


    BoutSte_Annuler=customtkinter.CTkButton(maFrame,text="Annuler",corner_radius=10,width=220,command=Annuler_ZoneSte)
    BoutSte_Annuler.grid(row=9,column=2,sticky="e",padx=5,pady=5,ipadx=10,ipady=10)


#_______________________________________
#Personnaliser la fenetre principale
Fenetre.iconbitmap("Champs.ico")
Fenetre.title("MezApp'S Apprentissage")
Fenetre.config(background="#E4DEBE")
Fenetre.geometry('1080x620')
Fenetre.minsize(width=700,height=400)

#Creation la Barre du Menu
Barre_Menu=Menu(Fenetre)

#Creation Menu deroulant = Fichiers
Menu1=Menu(Barre_Menu,tearoff=0)
Menu1.add_command(label="Ouvrir")
Menu1.add_command(label="Changement de Societe")
Menu1.add_separator()
Menu1.add_command(label="Creation de Societe",command=Afficher_CreationSte)
Menu1.add_command(label="Creation de Campagne")
Menu1.add_separator()
Menu1.add_command(label="Securite")
Menu1.add_command(label="Formater la Base des Donnees")
Menu1.add_separator()
Menu1.add_command(label="Quitter",command=Fenetre.quit)

Barre_Menu.add_cascade(label="Fichiers",menu=Menu1)


#-------------------------------------------------
#Configurer la Barre du Menu
Fenetre.config(menu=Barre_Menu)

#Charger la fenetre principale
Fenetre.mainloop()

Mon code est comme suite ( surtout la ligne 50) :


Windows / Chrome 121.0.0.0

4 réponses

Diablo76 Messages postés 204 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 30 octobre 2024 44
Modifié le 31 janv. 2024 à 17:29

Salut,

def Ajouter_ZoneSte():
        if not Zone_RaisonSociale.get():
            messagebox.showinfo("Information", message="Veuillez saisir la Raison Sociale", parent=maFrame)
1
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
Modifié le 1 févr. 2024 à 12:09

Re

Effectivement, après avoir remplacé

import messeagebox

... par :

from tkinter import messagebox

... le message marche bien avec ( parent = maFrame )

Merci

1
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
31 janv. 2024 à 18:17

Merci pour votre réponse.

Une remarque, votre proposition marche bien sans ( parent=maFarme )

par contre en laissant ( parent=maFarme ) le message ne s'affiche pas

Une question comment puis je faire pour que après l'affichage du message l'opération sort de la boucle ( en VB6 j'utilisais exit sub )

Une autre fois Merci

0
Diablo76 Messages postés 204 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 30 octobre 2024 44
31 janv. 2024 à 18:33

Pas sur d'avoir tout compris mais avec (parent=maFrame) et pas maFarme le message s'affiche bien sur le LabelFrame :

0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
31 janv. 2024 à 18:51

Re 

Justement c'est maFrame, pourtant ne marche pas avec ( parent )

Voila le message d'erreur que Python me renvoie 

File "C:\Users\hp\PycharmProjects\P2\main.py", line 53, in Ajouter_ZoneSte
    messagebox.showinfo("Information", message="Veuillez saisir la Raison Sociale", parent=maFrame)
TypeError: showinfo() got an unexpected keyword argument 'parent'

0
Diablo76 Messages postés 204 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 30 octobre 2024 44
31 janv. 2024 à 19:38

Etrange !! mais chez moi :

import messagebox

ne marche pas, il faut que je précise :

from tkinter import messagebox
0