Bonjour,

Je débute en python, et je galère avec Tkinter et Treeview.

J'essaye de créer un module qui permet de prendre n'importe quel fichier csv et de l'afficher dans une fenêtre en mode tableau.

Cela marche presque , mais j'ai des problèmes (comme par hasard ):
pour ajuster le treeview dans ma fenêtre que je souhaite dimensionnables ( treeview et fenêtre )
et j'ai beaucoup de mal avec les scrollbars.

Y aurait-il une âme charitable pour me filer un coup de main et m'indiquer où je me plante?
Je suis d'ailleurs preneur de tous conseils

A bientôt


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
 
import csv
import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo
from tkinter import filedialog
 
   file_csv = filedialog.askopenfilename(title="Ouvrir le fichier CSV",
                                      filetypes=[('fichier de configuration', '.csv'), ('all files', '.*')],
                                      multiple=False)
    # rien de choisi --> sortie
    if not file_csv:
        return
 
    ffile = open(file_csv)
    csvreader = csv.reader(ffile, delimiter=";")
    header = next(csvreader)
 
    columns=header
    rows = []
 
    root1 = tk.Tk()
    root1.geometry("500x400")
    root1.title(file_csv)
 
    # define columns
    #columns = ('first_name', 'last_name', 'email')
 
    treev = ttk.Treeview(root1, columns=columns, show='headings')
 
    vsb = ttk.Scrollbar(root1, orient="vertical", command=treev.yview)
    vsb.place(relx=0.978, rely=0.175, relheight=0.713, relwidth=0.020)
 
    hsb = ttk.Scrollbar(root1, orient="horizontal", command=treev.xview)
    hsb.place(relx=0.014, rely=0.875, relheight=0.020, relwidth=0.965)
 
    treev.configure(xscrollcommand=hsb.set,yscrollcommand=vsb.set )
 
    # define headings
    for i in columns:
        treev.heading(i, text=i)
        treev.column(i, width=100, minwidth=100,stretch=0)
    for row in csvreader:
        rows.append(row)
    ffile.close()
 
    for contact in rows:
        treev.insert('', tk.END, values=contact)
 
    treev.grid(row=0, column=0, sticky='nsew')
 
    # run the app
    root1.mainloop()