Partage
  • Partager sur Facebook
  • Partager sur Twitter

génération de mail type

    23 février 2024 à 0:46:40

    Bonjour tout le monde,

    je viens vous demander de l'aide car nouveau dans le python j'essaie de créer un petit programme pour mon boulot permettant de générer un mail type dans un champ a partir d'informations préalablement renseigner.

    Le Mail est toujours le même en fonction des personnes. Seules quelques infos change donc je voudrait entrer ces infos dans des champs puis appuyer sur un bouton trouver mon texte final dans un autre champ que je peux copier et coller ensuite dans mon mail. cela me ferais gagner un temps considérable.

     Voici ce que j'ai déjà fait mais je n'arrive pas a faire mettre a jour le champ 5. est ce qu'un âme charitable pourrais m'aider svp !

    from tkinter import *
    import tkinter
     
    fenetre= Tk()
     
    Label1 = Label(fenetre, text = 'Nom : ')
    Label1.grid(column=0, row=0, sticky='w')
    Name= StringVar()
    Champ = Entry(fenetre, textvariable= Name, width=31)
    Champ.focus_set()
    Champ.grid(column=1, row=0, sticky='sw', columnspan=2, padx=10)
     
     
     
    Label2 = Label(fenetre, text = 'Description OT : ',)
    Label2.grid(column=0, row=1,sticky='w',pady=2)
    Description= StringVar()
    Champ2 = Entry(fenetre, textvariable= Description, width=31)
    Champ2.focus_set()
    Champ2.grid(column=1, row=1,columnspan=2)
     
     
     
    Label3 = Label(fenetre, text = "Numéro de l'OT : ")
    Label3.grid(column=0, row=2, sticky='w',pady=2)
    Number= StringVar()
    Champ3 = Entry(fenetre, textvariable= Number,width=31)
    Champ3.focus_set()
    Champ3.grid(column=1, row=2,columnspan=2)
     
     
    Label4 = Label(fenetre, text = 'Montant de la taxe : ')
    Label4.grid(column=0, row=3,sticky='w',pady=2)
    Price= StringVar()
    Champ4 = Entry(fenetre, textvariable= Price,width=31)
    Champ4.focus_set()
    Champ4.grid(column=1, row=3,columnspan=2)
    
    
    
    Label5 = Label(fenetre, text = 'Texte généré : ')
    Label5.grid(column=0, row=12,sticky='w',pady=2)
    mail= StringVar()
    Champ5 = Entry(fenetre, textvariable= mail,width=31)
    Champ5.focus_set()
    Champ5.grid(column=1, row=12,columnspan=2)
    
    
    def envoyer():
        name=Entry.get()
        Champ5.config(text="test" + name)
    
    bouton1= Button (fenetre, text="envoyer", command=envoyer,pady=2)
    bouton1.grid (column=1, row=11,sticky='sw', pady=20)
    
    fenetre.mainloop()



    Merci beaucoup.

    • Partager sur Facebook
    • Partager sur Twitter
      23 février 2024 à 8:57:10

      @eXe76,

      Ligne 50, tu utilises la classe Entry au lieu de son l'instance...

      et comme on ne peut pas deviner pour vous quelle valeur de Champ doit être récupéré...

      Et pour la prochaine fois, copier coller l'erreur, ça permet de donner tout de suite l'indication sur la manière de résoudre. Si vous ne l'avez pas fait c'est que vous êtes sans doute sur Windows et que vous exécutez votre code par double click souris plutôt que dans votre "terminal" Windows.

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        23 février 2024 à 21:20:18

        Bonjour @fred1599 Tout d'abord merci de ta réponse. Effectivement j'ai oublier quelques de préciser ma demande. Le but est de récupérer la valeur des champs 1, 2, 3 et 4 pour qu'ensuite après avoir cliquer sur le bouton envoyer qu'un texte apparaisse dans le champ 5 avec la valeur des autres champs. aucune erreur mais rien ne se passe dans le champs 5
        • Partager sur Facebook
        • Partager sur Twitter
          24 février 2024 à 3:36:58

          Salut,

          Pas besoin des StringVar(), les widgets Entry() ont leurs propres méthodes .get().

          Pas judicieux de choisir un Entry() pour afficher un texte, plutôt un widget Text().

          Pour ce qui est du copier-coller, Tkinter ne gère pas le menu contextuel habituel, mais Ctrl/c et Ctrl/v fonctionnent.

          Tu peux facilement trouver sur le net de quoi créer un menu contextuel, pour le copier-coller comme ici pour les Entry() mais facilement adaptable pour les widgets Text() :

          https://gist.github.com/angeloped/91fb1bb00f1d9e0cd7a55307a801995f

          Ton code légèrement amélioré :

          import tkinter as tk
          
          def generate_and_insert_message():
              
              msg_structure = ["Monsieur ",
                      entry_name.get(),
                      ",\n\n",
                      "Veuillez trouver bla bla bla...",
                      "\n",
                      entry_desc_ot.get(),
                      "\n",
                      entry_num_ot.get(),
                      "\n",
                      entry_tax_amount.get(),
                      "\n\n",
                      "Cordialement."]
              
              text_generated.delete(1.0, tk.END)
              text_generated.insert("1.0", "".join(value for value in msg_structure))
          
          
          fenetre = tk.Tk()
          
          label_name = tk.Label(fenetre, text="Nom : ")
          label_name.grid(column=0, row=0, sticky="w")
          entry_name = tk.Entry(fenetre, width=31)
          entry_name.grid(column=1, row=0, sticky="sw", columnspan=2, padx=10)
          
          label_desc_ot = tk.Label(fenetre,text="Description OT : ",)
          label_desc_ot.grid(column=0, row=1, sticky="w", pady=2)
          entry_desc_ot = tk.Entry(fenetre, width=31)
          entry_desc_ot.grid(column=1, row=1, columnspan=2)
          
          label_num_ot = tk.Label(fenetre, text="Numéro de l'OT : ")
          label_num_ot.grid(column=0, row=2, sticky="w", pady=2)
          entry_num_ot = tk.Entry(fenetre, width=31)
          entry_num_ot.grid(column=1, row=2, columnspan=2)
          
          label_tax_amount = tk.Label(fenetre, text="Montant de la taxe : ")
          label_tax_amount.grid(column=0, row=3, sticky="w", pady=2)
          entry_tax_amount = tk.Entry(fenetre, width=31)
          entry_tax_amount.grid(column=1, row=3, columnspan=2)
          
          label_generated_text = tk.Label(fenetre, text="Texte généré : ")
          label_generated_text.grid(column=0, row=12, sticky="w", pady=2)
          text_generated = tk.Text(fenetre, height=10, width=33)
          text_generated.grid(column=1)
          
          but_generate_text = tk.Button(fenetre, text="Générer", command=generate_and_insert_message, pady=2)
          but_generate_text.grid(column=1, row=11, sticky="sw", pady=20)
          
          entry_name.focus_set()
          
          fenetre.mainloop()

          Tu peux encore aller plus loin avec une ListBox pour selectionner la civilité (Monsieur, Madame, etc...) et pourquoi pas envoyer le mail directement à partir de l'interface.

          -
          Edité par Garkam 24 février 2024 à 3:53:03

          • Partager sur Facebook
          • Partager sur Twitter

          génération de mail type

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown