Treeview Python
Résolu
python
-
isadama -
isadama -
Bonjour
j'ai un soucis avec l'affichage de treeview de python avec tkinter.
En effet, le treeview affiche le contenu de ma table sauf que l'affichage vient avec des caractères ' ' et des parenthèses.
Quelqu'un pourrait m'aider à régler cela?
Je vous envoi mon code et une capture de la présentation de mon treeview.
Merci d'avance§
from tkinter import * from tkinter import messagebox, ttk from tkcalendar import * import database import os import tempfile import pyodbc from tkinter import ttk class Salarie: def __init__(self, root): self.root = root self.root.title("Gestion de paie") self.root.geometry("1350x1080+0+0") title = Label(self.root, text="Gestion de Paie", bd=10, relief=RAISED, font=('Algerian', 10), bg='cyan', fg='black') title.pack(side=TOP, fill=X) # Les variables self.matricule= StringVar() self.etablissement = StringVar() self.nom = StringVar() self.prenom = StringVar() self.genre = StringVar() self.mail = StringVar() self.nationalite = StringVar() self.situation = StringVar() self.tel1 = StringVar() self.tel2 = StringVar() self.adresse = StringVar() self.modePaie = StringVar() self.crit1 = StringVar() self.crit2 = StringVar() self.crit3 = StringVar() self.crit4 = StringVar() self.crit5 = StringVar() self.crit6 = StringVar() self.crit7 = StringVar() self.crit8 = StringVar() self.crit9 = StringVar() self.crit10 = StringVar() self.crit11 = StringVar() self.crit12 = StringVar() self.varLibre1 = StringVar() self.varLibre2 = StringVar() self.varLibre3 = StringVar() self.varLibre4 = StringVar() self.varLibre5 = StringVar() self.varLibre6 = StringVar() self.varLibre7 = StringVar() self.varLibre8 = StringVar() self.observation = StringVar() Frame0 = Frame(self.root, bd=2, relief=RIDGE) Frame0.place(x=10, y=40, width=465, height=635) title0 = Label(Frame0, text="Liste salarié", font=("times new roman", 10), bg="lightgray", fg="black") title0.pack(side=TOP, fill=X) detail_frame = Label(Frame0, text="Rechercher par:", font=("times new roman", 12), fg="black") detail_frame.place(x=8, y=30) rech = ttk.Combobox(Frame0, font=("times new roman", 12), state="readonly") rech["values"]=("code", "nom", "prenom") rech.place(x=110, y=30, width=100, height=25) rech.current(0) rech_txt = Entry(Frame0, font=("times new roman", 12), fg="black") rech_txt.place(x=215, y=30, width=150, height=25) btn_recher = Button(Frame0, text="Rechercher", font=("times new roman", 10, "bold"), bg="gray").place(x= 375, y=30) btn_affichtout = Button(Frame0, text="Afficher tout", font=("times new roman", 10, "bold"), bg="gray").place(x=375, y=60) #Affichage result_frame = Frame(Frame0, bd=2, relief=RIDGE, bg="white") result_frame.place(x=5, y=85, width=450, height=540) scroll_x = Scrollbar(result_frame, orient=HORIZONTAL) scroll_y = Scrollbar(result_frame, orient=VERTICAL) self.tabl_result = ttk.Treeview(result_frame, columns=("code", "nom", "prenom"), xscrollcommand=scroll_x.set, yscrollcommand=scroll_y.set) scroll_x.pack(side=BOTTOM, fill=X) scroll_y.pack(side=RIGHT, fill=Y) self.tabl_result.heading("code", text="Code", anchor=W) self.tabl_result.heading("nom", text="Nom", anchor=W) self.tabl_result.heading("prenom", text="Prénom(s)", anchor=W) self.tabl_result["show"] = "headings" self.tabl_result.column("code", anchor=W, width=80) self.tabl_result.column("nom", anchor=W, width=150) self.tabl_result.column("prenom", anchor=W, width=200) self.tabl_result.pack() self.tabl_result.bind("<ButtonRelease-1") self.afficher_result() Frame1 = Frame(self.root, bd=2, relief=RIDGE) Frame1.place(x=480, y=40, width=850, height=635) title2 = Label(Frame1, text="Informations salarié", font=("times new roman", 10), bg="lightgray") title2.pack(side=TOP, fill=X) Framecrit= Frame(self.root, bd=2, relief=RIDGE) Framecrit.place(x=480, y=250, width=415, height=320) critsimple = Label(Framecrit, text="critères simples", font=("times new roman", 9), fg="red") critsimple.pack(side=TOP, fill=X) Framecritx = Frame(self.root, bd=2, relief=RIDGE) Framecritx.place(x=905, y=250, width=415, height=320) critmultiple = Label(Framecritx, text="critères multiples", font=("times new romans", 9), fg="red") critmultiple.pack(side=TOP, fill=X) Frameimage = Frame(self.root, bd=2, relief=RIDGE) Frameimage.place(x=1105, y=95, width=215, height=150) lbl_matricule = Label(Frame1, text="Matricule", font=("times new roman", 12)).place(x=10, y=25) lbl_etabl = Label(Frame1, text="Etablissement", font=("times new roman", 12)).place(x=10, y=55) lbl_nom = Label(Frame1, text="Nom", font=("times new roman", 12)).place(x=10, y=80) lbl_prenom = Label(Frame1, text="Prénom(s)", font=("times new roman", 12)).place(x=10, y=105) lbl_genre = Label(Frame1, text="Genre", font=("times new roman", 12)).place(x=12, y=130) lbl_mail = Label(Frame1, text="E_mail", font=("times new roman", 12)).place(x=12, y=155) lbl_national = Label(Frame1, text="Nationnalité", font=("times new roman", 12)).place(x=10, y=180) lbl_observation = Label(Frame1, text="Observations", font=("times new roman", 12)).place(x=10, y=530) lbl_situation = Label(Frame1, text="Situation familiale", font=("times new roman", 12)).place(x=310, y=55) lbl_naissance = Label(Frame1, text="Date Naissance", font=("times new roman", 12)).place(x=310, y=80) lbl_telephone1 = Label(Frame1, text="Téléphone 1", font=("times new roman", 12)).place(x=310, y=105) lbl_telephone2 = Label(Frame1, text="Téléphone 2", font=("times new roman", 12)).place(x=310, y=130) lbl_adress = Label(Frame1, text="Adresse", font=("times new roman", 12)).place(x=310, y=155) lbl_mode_paie = Label(Frame1, text="Mode paiement", font=("times new roman", 12)).place(x=310, y=180) lbl_varlibre1 = Label(Frame1, text="VarLibre1", font=("times new roman", 12)).place(x=355, y=530) lbl_varlibre2 = Label(Frame1, text="VarLibre2", font=("times new roman", 12)).place(x=355, y=555) lbl_varlibre3 = Label(Frame1, text="VarLibre3", font=("times new roman", 12)).place(x=355, y=580) lbl_varlibre4 = Label(Frame1, text="VarLibre4", font=("times new roman", 12)).place(x=355, y=600) lbl_varlibre5 = Label(Frame1, text="VarLibre5", font=("times new roman", 12)).place(x=600, y=530) lbl_varlibre6 = Label(Frame1, text="VarLibre6", font=("times new roman", 12)).place(x=600, y=555) lbl_varlibre7 = Label(Frame1, text="VarLibre7", font=("times new roman", 12)).place(x=600, y=580) lbl_varlibre8 = Label(Frame1, text="VarLibre8", font=("times new roman", 12)).place(x=600, y=600) lbl_photo = Label(Frame1, text="Photo d'identité", font=("times new roman", 12)).place(x=625, y=25) lbl_crit1 = Label(Framecrit, text="Critère 1", font=("times new roman", 12)).place(x=10, y=17) lbl_crit2 = Label(Framecrit, text="Critère 2", font=("times new roman", 12)).place(x=10, y=42) lbl_crit3 = Label(Framecrit, text="Critère 3", font=("times new roman", 12)).place(x=10, y=67) lbl_crit4 = Label(Framecrit, text="Critère 4", font=("times new roman", 12)).place(x=10, y=92) lbl_crit5 = Label(Framecrit, text="Critère 5", font=("times new roman", 12)).place(x=10, y=117) lbl_crit6 = Label(Framecrit, text="Critère 6", font=("times new roman", 12)).place(x=10, y=142) lbl_crit7 = Label(Framecrit, text="Critère 7", font=("times new roman", 12)).place(x=10, y=166) lbl_crit8 = Label(Framecrit, text="Critère 8", font=("times new roman", 12)).place(x=10, y=192) lbl_crit9 = Label(Framecrit, text="Critère 9", font=("times new roman", 12)).place(x=10, y=217) lbl_crit10 = Label(Framecrit, text="Critère 10", font=("times new roman", 12)).place(x=10, y=242) lbl_crit11 = Label(Framecrit, text="Critère 11", font=("times new roman", 12)).place(x=10, y=267) lbl_crit12 = Label(Framecrit, text="Critère 12", font=("times new roman", 12)).place(x=10, y=292) self.matricule = Entry(Frame1, textvariable=self.matricule, font=('times new roman', 10), bg="lightyellow") self.matricule.place(x=115, y=25, width=100) self.etablissement = ttk.Combobox(Frame1, textvariable=self.etablissement, font=('times new roman', 10), state="readonly") self.etablissement["values"] = (1,2,3) self.etablissement.place(x=115, y=55, width=175) self.etablissement.current(0) self.nom = Entry(Frame1, textvariable=self.nom, font=('times new roman', 10), bg="lightyellow") self.nom.place(x=115, y=80, width=175) self.prenom = Entry(Frame1, textvariable=self.prenom, font=('times new roman', 10), bg="lightyellow") self.prenom.place(x=115, y=105, width=175) self.genre = ttk.Combobox(Frame1, textvariable=self.genre, font=('time new roman', 10), state="readonly") self.genre["values"] = (1,2) self.genre.place(x=115, y=130, width=175) self.genre.current(0) self.mail = Entry(Frame1, textvariable=self.mail, font=('E_mail', 10), bg="lightyellow") self.mail.place(x=115, y=155, width=175) self.nationalite = ttk.Combobox(Frame1, textvariable=self.nationalite, font=('time new roman', 10), state="readonly") self.nationalite["values"] = (1,2,3,4) self.nationalite.place(x=115, y=180, width=175) self.nationalite.current(0) self.observation = Text(Frame1, font=("time new roman", 10), bg="lightyellow") self.observation.place(x=115, y=540, width=230, height=90) self.situation = ttk.Combobox(Frame1, textvariable=self.situation, font=('time new roman', 10), state="readonly") self.situation["values"] = (1,2,3,4) self.situation.place(x=440, y=55, width=175) self.situation.current(0) self.ecri_date = DateEntry(Frame1, font=("time new roman", 10), bg="lightyellow", state="readonly", locale='fr_FR', date_pattern = 'dd/mm/yyyy') self.ecri_date.place(x=440, y=80, width=175) self.tel1 = Entry(Frame1,textvariable=self.tel1, font=("time new roman", 10), bg="lightyellow") self.tel1.place(x=440, y=105, width=175) self.tel2 = Entry(Frame1, textvariable=self.tel2, font=("time new roman", 10), bg="lightyellow") self.tel2.place(x=440, y=130, width=175) self.adresse = Entry(Frame1, textvariable=self.adresse, font=("time new roman", 10), bg="lightyellow") self.adresse.place(x=440, y=155, width=175) self.modePaie = ttk.Combobox(Frame1, textvariable=self.modePaie, font=('time new roman', 10), state="readonly") self.modePaie["values"] = (1,2,3,4,5) self.modePaie.place(x=440, y=180, width=175) self.modePaie.current(0) self.crit1 = ttk.Combobox(Framecrit, textvariable=self.crit1, font=('time new roman', 10), state="readonly") self.crit1["values"] = (1,2,3,4,5) self.crit1.place(x=170, y=20, width=240) self.crit1.current(0) self.crit2 = ttk.Combobox(Framecrit, textvariable=self.crit2, font=('time new roman', 10), state="readonly") self.crit2["values"] = (1,2,3,4,5) self.crit2.place(x=170, y=45, width=240) self.crit2.current(0) self.crit3 = ttk.Combobox(Framecrit, textvariable=self.crit3, font=('time new roman', 10), state="readonly") self.crit3["values"] = (1,2,3,4,5) self.crit3.place(x=170, y=70, width=240) self.crit3.current(0) self.crit4 = ttk.Combobox(Framecrit, textvariable=self.crit4, font=('time new roman', 10), state="readonly") self.crit4["values"] = (1,2,3,4,5) self.crit4.place(x=170, y=95, width=240) self.crit4.current(0) self.crit5 = ttk.Combobox(Framecrit, textvariable=self.crit5, font=('time new roman', 10), state="readonly") self.crit5["values"] = (1,2,3,4,5) self.crit5.place(x=170, y=120, width=240) self.crit5.current(0) self.crit6 = ttk.Combobox(Framecrit, textvariable=self.crit6, font=('time new roman', 10), state="readonly") self.crit6["values"] = (1,2,3,4,5) self.crit6.place(x=170, y=145, width=240) self.crit6.current(0) self.crit7 = ttk.Combobox(Framecrit, textvariable=self.crit7, font=('time new roman', 10), state="readonly") self.crit7["values"] = (1,2,3,4,5) self.crit7.place(x=170, y=170, width=240) self.crit7.current(0) self.crit8 = ttk.Combobox(Framecrit, textvariable=self.crit8, font=('time new roman', 10), state="readonly") self.crit8["values"] = (1,2,3,4,5) self.crit8.place(x=170, y=195, width=240) self.crit8.current(0) self.crit9 = ttk.Combobox(Framecrit, textvariable=self.crit9, font=('time new roman', 10), state="readonly") self.crit9["values"] = (1,2,3,4,5) self.crit9.place(x=170, y=220, width=240) self.crit9.current(0) self.crit10 = ttk.Combobox(Framecrit, textvariable=self.crit10, font=('time new roman', 10), state="readonly") self.crit10["values"] = (1,2,3,4,5) self.crit10.place(x=170, y=245, width=240) self.crit10.current(0) self.crit11 = ttk.Combobox(Framecrit, textvariable=self.crit11, font=('time new roman', 10), state="readonly") self.crit11["values"] = (1,2,3,4,5) self.crit11.place(x=170, y=270, width=240) self.crit11.current(0) self.crit12 = ttk.Combobox(Framecrit, textvariable=self.crit12, font=('time new roman', 10), state="readonly") self.crit12["values"] = (1,2,3,4,5) self.crit12.place(x=170, y=295, width=240) self.crit12.current(0) self.varLibre1 = Entry(Frame1, textvariable=self.varLibre1, font=('times new roman', 10), bg="lightyellow") self.varLibre1.place(x=445, y=535, width=140) self.varLibre2 = Entry(Frame1, textvariable=self.varLibre2, font=('times new roman', 10), bg="lightyellow") self.varLibre2.place(x=445, y=562, width=140) self.varLibre3 = Entry(Frame1, textvariable=self.varLibre3, font=('times new roman', 10), bg="lightyellow") self.varLibre3.place(x=445, y=585, width=140) self.varLibre4 = Entry(Frame1, textvariable=self.varLibre4, font=('times new roman', 10), bg="lightyellow") self.varLibre4.place(x=445, y=608, width=140) self.varLibre5 = Entry(Frame1, textvariable=self.varLibre5, font=('times new roman', 10), bg="lightyellow") self.varLibre5.place(x=700, y=535, width=140) self.varLibre6 = Entry(Frame1, textvariable=self.varLibre6, font=('times new roman', 10), bg="lightyellow") self.varLibre6.place(x=700, y=562, width=140) self.varLibre7 = Entry(Frame1, textvariable=self.varLibre7, font=('times new roman', 10), bg="lightyellow") self.varLibre7.place(x=700, y=585, width=140) self.varLibre8 = Entry(Frame1, textvariable=self.varLibre8, font=('times new roman', 10), bg="lightyellow") self.varLibre8.place(x=700, y=608, width=140) btn_ajout = Button( text="Ajouter", command=self.ajout_salarie, font=("times new roman", 10, "bold"),relief=GROOVE, bg="green").place(x=11, y=675) btn_modif = Button(text="Modifier", font=("times new roman", 10, "bold"),relief=GROOVE, bg="yellow").place(x=75, y=675) btn_suppr = Button(text="Supprimer", font=("times new roman", 10, "bold"),relief=GROOVE, bg="red").place(x=145, y=675) btn_reini = Button(text="Réinitialiser", font=("times new roman", 10, "bold"),relief=GROOVE, bg="blue").place(x=225, y=675) def reini(self): self.matricule.delete(0, END) self.etablissement.delete(0, END) self.nom.delete(0, END) self.prenom.delete(0, END) self.genre.delete(0, END) self.mail.delete(0, END) self.nationalite.delete(0, END) self.situation.delete(0, END) self.ecri_date.set_date("03/03/2022") self.tel1.delete(0, END) self.tel2.delete(0, END) self.adresse.delete(0, END) self.modePaie.delete(0, END) self.crit1.delete(0, END) self.crit2.delete(0, END) self.crit3.delete(0, END) self.crit4.delete(0, END) self.crit5.delete(0, END) self.crit6.delete(0, END) self.crit7.delete(0, END) self.crit8.delete(0, END) self.crit9.delete(0, END) self.crit10.delete(0, END) self.crit11.delete(0, END) self.crit12.delete(0, END) self.varLibre1.delete(0, END) self.varLibre2.delete(0, END) self.varLibre3.delete(0, END) self.varLibre4.delete(0, END) self.varLibre5.delete(0, END) self.varLibre6.delete(0, END) self.varLibre7.delete(0, END) self.varLibre8.delete(0, END) self.observation.delete("1.0", "end") def ajout_salarie(self): if self.matricule.get() == "" or self.nom.get() == "" or self.prenom.get() == "": messagebox.showerror("Attention:", "Vous n'avez pas rempli les champs obligatoires", parent=self.root) else: try: cursor = database.conn.cursor() cursor.execute("select* from salarie where matricule=?", self.ecri_date.get()) row = cursor.fetchone() if row != None: messagebox.showerror("Erreur:", "Cette données existe déjà", parent=self.root) else: cursor.execute( "INSERT INTO salarie(Matricule,Etabl,Nom,Prenoms,Sexe,PaysNationalite,Email,SituationFamiliale,DateNaissance," "Telephone1,Telephone2, Adresse,ModePaiement,Crit1,Crit2,Crit3,Crit4,Crit5,Crit6,Crit7,Crit8" ",Crit9,Crit10,Crit11,Crit12,VarLibre1,VarLibre2,VarLibre3,VarLibre4,VarLibre5,VarLibre6,VarLibre7,VarLibre8,ObSalarie) " "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", (self.matricule.get(), self.etablissement.get(), self.nom.get(), self.prenom.get(), self.genre.get(), self.nationalite.get(), self.mail.get(), self.situation.get(), self.ecri_date.get(), self.tel1.get(), self.tel2.get(), self.adresse.get(), self.modePaie.get(), self.crit1.get(), self.crit2.get(), self.crit3.get(), self.crit4.get(), self.crit5.get(), self.crit6.get(), self.crit7.get(), self.crit8.get(), self.crit9.get(), self.crit10.get(), self.crit11.get(), self.crit12.get(), self.varLibre1.get(), self.varLibre2.get(), self.varLibre3.get(), self.varLibre4.get(), self.varLibre5.get(), self.varLibre6.get(), self.varLibre7.get(), self.varLibre8.get(), self.observation.get("1.0", END))) database.conn.commit() self.afficher_result() #database.conn.close() messagebox.showinfo("Salarié enregistré avec succès") self.reini() except Exception as es: messagebox.showerror("Erreur:", f" {str(es)}", parent=self.root) def afficher_result(self): cursor = database.conn.cursor() cursor.execute("select matricule, nom, prenoms from salarie") rows = cursor.fetchall() if len(rows) != 0: self.tabl_result.delete(* self.tabl_result.get_children()) for row in rows: self.tabl_result.insert("", END, values=row) database.conn.commit() #database.conn.close() root = Tk() obj = Salarie(root) root.mainloop()
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peux-tu partager ton module database?
Bonjour
je vous envoi mon module database ici.
Mais ma requête de sélection
fonctionne bien dans sql.
Seulement c'est la présentation du tableau de liste qui se présente pas bien.
Il des caractères supplémentaires qui viennent s'ajouter.
Cordialement,
Ce qui confirme l'analyse de hystouar en #2: tes données ne sont pas enregistrées comme tu le souhaites dans ta base de données.
Bonjour
quand je fait un simple print le résultat s'affiche correctement.
Mais dans le tableau le résultat n'est pas correct.
je vous envoi une image de print row
w dans ce message.
Merci d'avance.
Bonjour
je constate par exemple un affichage avec une autre base de données.
je ne comprend pas pourquoi mes valeurs du treeview sont entre parenthèse et griffe et séparées par des virgules.
isadama
Partage la source du programme qui fait ce print().