Selectionner une liste dans treeview pour la supprimer dans
Ferméregglyss - 14 août 2022 à 15:44
- Tkinter treeview selection
- L'indice n'appartient pas à la sélection vba ✓ - Forum Excel
- Vous ne pouvez pas apporter cette modification car la sélection est verrouillée ✓ - Forum Word
- Selection texte pdf - Guide
- Exporter selection photoshop ✓ - Forum Graphisme
- Excel rechercher et remplacer dans une selection ✓ - Forum Excel
4 réponses
13 août 2022 à 22:11
bonjour,
peux-tu montrer ton code?
Modifié le 13 août 2022 à 22:36
C'est le code ça:
from subprocess import call from tkinter import * from tkinter.messagebox import showerror from tkinter.ttk import Entry, Treeview import mysql.connector import datetime title = 'G-Client' def on_enter(e): ajout_browse['bg'] = '#1b1a1a' def on_leave(e): ajout_browse['bg'] = '#2699ad' def on_ente(e): edit_browse['bg'] = '#1b1a1a' def on_leav(e): edit_browse['bg'] = '#2699ad' def on_ent(e): delete_browse['bg'] = '#1b1a1a' def on_lea(e): delete_browse['bg'] = '#2699ad' def on_en(e): print_browse['bg'] = '#1b1a1a' def on_le(e): print_browse['bg'] = '#2699ad' def Ajouter(): name = name_client_entry.get() mail = client_mail_entry.get() tel = client_tel_entry.get() pays = client_country_entry.get() province = client_province_entry.get() maBase = mysql.connector.connect(host='localhost', user='root', password='netlech',database='client') meConnecter = maBase.cursor() try: sql = "INSERT INTO g_client(Name, Email, Tel, Pays, Province,Date) VALUES (%s,%s,%s,%s,%s,%s)" date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") val = (name, mail, tel, pays, province, date) meConnecter.execute(sql, val) maBase.commit() windows.destroy() call(['python', 'ajout.py']) except Exception as e: showerror("Error", f"error {e}") def delete(): maBase = mysql.connector.connect(host='localhost', user='root', password='netlech',database='client') meConnecter = maBase.cursor() try: name = name_client_entry.get() sql = "DELETE FROM g_client WHERE name = %s" val = (name, ) meConnecter.execute(sql,val) maBase.commit() windows.destroy() call(['python', 'ajout.py']) except Exception as e: showerror("Error", f"error {e}") windows =Tk() windows.geometry("900x500") windows.title(f"Ajouter un client {title}") windows.state('zoomed') menu_bar = Menu(windows) file_menu = Menu(menu_bar, tearoff=0) file_menu.add_command(label="Ajouter un client") file_menu.add_command(label="Editer un client") file_menu.add_command(label='supprimer un client') file_menu.add_separator() file_menu.add_command(label='Contacter un client') file_menu.add_separator() file_menu.add_command(label='Nouvelle fenêtre') file_menu.add_separator() file_menu.add_command(label='Quittez') menu_bar.add_cascade(label="File", menu=file_menu) option_menu = Menu(menu_bar, tearoff=0) option_menu.add_command(label="Paramètres") option_menu.add_command(label="Enregistré G-Client") option_menu.add_command(label="Désenregistrer G-Client") menu_bar.add_cascade(label="Options", menu=option_menu) help_menu = Menu(menu_bar, tearoff=0) help_menu.add_command(label="À propos de G-Client", accelerator='F1') help_menu.add_command(label="Ouvrir le dossier d'installation de G-Client") help_menu.add_separator() help_menu.add_command(label="Désenregistrer G-Client") menu_bar.add_cascade(label="Aide", menu=help_menu) # :::::::::::::: Navigation menu top :::::::::::::::::::: topframe = Frame(windows, width=1800, height=80, bg='#2699ad') topframe.grid(sticky=NW, in_=windows, ipadx=800) ajout_img = PhotoImage(file='assets/icon/edit_2.png').zoom(1) ajout_browse = Button(topframe, text="Ajouter", image=ajout_img,bd=0, compound=TOP, relief=SUNKEN,borderwidth=0, bg="#2699ad", fg='snow', activebackground='#131212', activeforeground='snow',command=Ajouter) ajout_browse.grid(row=0, column=0, ipadx=20, ipady=15) ajout_browse.bind("<Enter>", on_enter) ajout_browse.bind("<Leave>", on_leave) def Edit(): call(["python", 'edit.py']) edit_img = PhotoImage(file='assets/icon/list_2.png').zoom(1) edit_browse = Button(topframe, text="Editer", image=edit_img,bd=0, activebackground='#131212',activeforeground='snow', compound=TOP, relief=SUNKEN, bg="#2699ad",fg="snow", command=Edit) edit_browse.grid(row=0, column=1, ipadx=20, ipady=15, padx=1) edit_browse.bind("<Enter>", on_ente) edit_browse.bind("<Leave>", on_leav) delete_img = PhotoImage(file='assets/icon/clear.png').zoom(1) delete_browse = Button(topframe, text="Supprimer", image=delete_img,bd=0, activebackground='#131212',activeforeground='snow', compound=TOP, relief=SUNKEN, bg="#2699ad",fg="snow",command=delete) delete_browse.grid(row=0, column=2, ipadx=20, ipady=15, padx=1) delete_browse.bind("<Enter>", on_ent) delete_browse.bind("<Leave>", on_lea) print_img = PhotoImage(file='assets/icon/print.png').zoom(1) print_browse = Button(topframe, text="Imprimer la liste des clients", image=print_img,bd=0, activebackground='#131212',activeforeground='snow', compound=TOP, relief=SUNKEN, bg="#2699ad",fg="snow") print_browse.grid(row=0, column=3, ipadx=20, ipady=15, padx=1) print_browse.bind("<Enter>", on_en) print_browse.bind("<Leave>", on_le) # :::::::::::::::::::::::::::::::::: # ::::::::::::::: Affichage des items du panedWindow left ::::::::::::::::::: panedLeft = PanedWindow(border=4, bg='#131212',borderwidth=0) panedLeft.grid(sticky=NW) leftframe = Frame(bg='#e2e2e2', width=50, height=10) name_client_label = Label(leftframe, text='Nom du Client:', bg='#e2e2e2', font='system') name_client_label.grid(row=0, column=0) name_client_entry = Entry(leftframe, font=('system')) name_client_entry.grid(row=0, column=1, pady=10, padx=10, ipady=3, ipadx=2) client_mail = Label(leftframe,text="Email:", font='system', bg='#e2e2e2') client_mail.grid(row=1, column=0) client_mail_entry = Entry(leftframe, font=('system')) client_mail_entry.grid(row=1, column=1, pady=10, padx=10, ipady=3, ipadx=2) client_tel = Label(leftframe,text="Téléphone:", font='system', bg='#e2e2e2') client_tel.grid(row=2, column=0) client_tel_entry = Entry(leftframe, font=('system')) client_tel_entry.grid(row=2, column=1, pady=10, padx=10, ipady=3, ipadx=2) client_country = Label(leftframe,text="Pays:", font='system', bg='#e2e2e2') client_country.grid(row=3, column=0) client_country_entry = Entry(leftframe, font=('system')) client_country_entry.grid(row=3, column=1, pady=10, padx=10, ipady=3, ipadx=2) client_province = Label(leftframe,text="Province/Etat:", font='system', bg='#e2e2e2') client_province.grid(row=4, column=0) client_province_entry = Entry(leftframe, font=('system')) client_province_entry.grid(row=4, column=1, pady=10, padx=10, ipady=3, ipadx=2) # def save(): # from tkinter.ttk import Button # save = Button(leftframe, text="Ajouter le Client") # save.grid(row=5, column=0,sticky=E,ipadx=20,ipady=10, padx=40, pady=40) # save() panedLeft.add(leftframe) # ::::::::::::::: ::::::::::::::::::: # ::::::::::::::: Afficher le nombre de client ajouter ::::::::::::::::::: nmbre_frame = Frame(windows, width=800, bg="#2699ad",bd=5,highlightthickness=2, highlightbackground='#1e3336', highlightcolor="#1e3336") nmbre_frame.grid(row=3, column=0, sticky=W, ipady=15, in_=windows, ipadx=283) nbre_label = Label(nmbre_frame, text='Nombre de Client: 8', bg="#2699ad",fg="snow", font='system') nbre_label.grid(row=0, column=0) taille_label = Label(nmbre_frame, text='Taille: 4M', bg="#2699ad",fg="snow", font='system') taille_label.grid(row=0, column=1, padx=309) # ::::::::::::::: Affichage du treeview ::::::::::::::::::: PanedRight = PanedWindow(windows, orient=VERTICAL) from tkinter.ttk import Style style = Style() style.theme_use('clam') table = Treeview(PanedRight, height=29,columns=(1, 2, 3, 4, 5,6), show='headings') table.pack(fill=BOTH) table.column(1, anchor=CENTER) table.column(2, anchor=CENTER) table.column(3, anchor=CENTER) table.column(4, anchor=CENTER,width=90) table.column(5, anchor=CENTER) table.column(6, anchor=CENTER) table.heading(1, text="Nom du client") table.heading(2, text="Email") table.heading(3, text="Téléphone") table.heading(4, text="Pays") table.heading(5, text="Province/Etat") table.heading(6, text="Date et Heure") panedLeft.add(PanedRight) # ::::::::::::::: ::::::::::::::::::: #:::::::::::::::Création d'un base de donnée:::::::::::::::::::: maBase = mysql.connector.connect(host='localhost', user='root', password='netlech',database='client') meConnecter = maBase.cursor() meConnecter.execute('select * from g_client') for row in meConnecter: table.insert('', END, values=row) maBase.close() #:::::::::::::::::::::::::::::::::::::::::: windows.config(bg="grey", menu= menu_bar) mainloop()
EDIT : Déplacement du sujet dans le forum PYTHON
EDIT²: Ajout du LANGAGE dans les BALISES DE CODE
Bonsoir,
Ce genre de chose :
call(['python', 'ajout.py'])
est une très mauvaise pratique.
En ce qui concerne ton souci, si j'ai bien saisi, il faut bien évidemment utiliser les événements du treeview, ils sont au nombre de 3 :
• Whenever there is a change in the selection, either by items becoming selected or becoming unselected, the widget generates a “<<TreeviewSelect>>” event.
• Whenever an item is opened, the widget generates a “<<TreeviewOpen>>” event.
• Whenever an item is closed, the widget generates a “<<TreeviewClose>>” event.
Pour ce que tu veux réaliser, ce serait sans doute le 1er ?
À utiliser dans la méthode bind de ton treeview évidemment =)
14 août 2022 à 00:03
Ok merci pour la reponse mais pour la methode selection pour selectionner sur la table et si j'appuie sur le bouton supprimer la liste selectionner doit supprimer sur la table de même dans la base de donnees
Bonjour, relis-toi avant de poster un message, ce que tu as écrit est incompréhensible.
Comme je t'ai indiqué, il faut donc utiliser un event sur ton treeview, dans la fonction reliée à l'événement, tu t'arranges pour récupérer la ligne sélectionnée, la méthode focus du treeview fera l'affaire, pour supprimer une ligne, la méthod delete. Pour récupérer les valeurs d'une ligne du treeview, la méthode item en passant comme option values.