Tout d'abord bonjour à tous et toutes.
J'ai codé un petit script qui me permet d'afficher mes comptes clients (je suis chef d'entreprise).
Je n'arrivais pas à faire en sorte que les lignes de mes treeviews se colorent d'une certaine façon sous conditions et après une recherche, j'ai pu trouver
le code suivant qui règle ce problème.
Je peux ensuite avec un tag.configure, gérer mes background et foreground.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 s = ttk.Style () if fTdB.getvar ('tk_patchLevel') == '8.6.9': # and OS_Name=='nt': def fixed_map(option): return [elm for elm in s.map ('Treeview', query_opt=option) if elm[:2] != ('!disabled', '!selected')] s.map ('Treeview', foreground=fixed_map ('foreground'), background=fixed_map ('background'))
TOUT fonctionne très bien et j'en suis très content.
Ayant besoin pour mon travail d'autres script que les comptes clients, j'ai en codé plusieurs (enregistrement, fiche de contact, etc...), et j'ai tout regroupé sous un "launcher",
qui fonctionne lui aussi très bien, mais (parce qu'il y a un mais...), lorsque j'appelle le compte clients depuis le launcher celui ci s'ouvre et fonctionne parfaitement sauf les conditions sur la coloration...
et je n'ai aucun message d'erreur...
Je mets le code du launcher.
J'ajoute également le script du compte client.
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 # imports from tkinter import * from AideMPCListeClients import * from AideMPCInscription import * from AideMPCTdB import * from AideMPCPrefs import * from AideMPCPlanning import * root = Tk() root.title ("Bureau") L=root.winfo_screenwidth() l=root.winfo_screenheight() root.geometry ("720x375+%d+%d" %(L/2-360,l/2-185)) lblTitlte = Label (root, text="Bureau", font=("Arial", 24), bg="darkblue", fg="white") lblTitlte.place (x=0, y=0, width=240) photo_TdB = PhotoImage(file = 'graphique-histogramme.png') ButTdB = Button(root, image=photo_TdB, text='TdB', command=FenTabdeBord) ButTdB.place(x=380, y=205, height=110, width=110) ButQuit = Button(root, text="Quitter", bg="darkblue", fg="yellow", command=root.destroy) ButQuit.place(x=645, y=345, width=75, height=30) root.mainloop()
Vous comprendrez en lisant le code que je ne suis pas un expert (pas forcement de respect des règles de nommage en Python et pas forcement le code le plus efficient) mais ces scripts ne sont utilisés
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 from datetime import * from tkinter import * from tkinter import messagebox from tkinter import ttk # Tableau de bord def FenTabdeBord(): def Affiche_lancement(): # Afficher AT du mois en cours anneeAT = Entry_AnneeAT.get () moisAT = ListeMoisAT.get () Type1 = "AT" conn = sqlite3.connect ('TableauDeBord.db') cur = conn.cursor () select = cur.execute ("SELECT * FROM TdB WHERE Année=? AND Mois=? AND RDV=? ORDER BY Date ASC", (anneeAT, moisAT, Type1,)) s = ttk.Style () if fTdB.getvar ('tk_patchLevel') == '8.6.9': # and OS_Name=='nt': def fixed_map(option): return [elm for elm in s.map ('Treeview', query_opt=option) if elm[:2] != ('!disabled', '!selected')] s.map ('Treeview', foreground=fixed_map ('foreground'), background=fixed_map ('background')) for x in tree_TdB.get_children (): tree_TdB.delete (x) for row in cur.fetchall (): if row[10] == "0": tree_TdB.insert ('', END, value=row, tags=['even']) else: tree_TdB.insert ('', END, value=row, tags=['odd']) tree_TdB.tag_configure ("even", foreground="black", background="pink") tree_TdB.tag_configure ("odd", foreground="black", background="white") conn.close () locale.setlocale (locale.LC_TIME, '') fTdB = Tk() fTdB.title (' Tableau de bord ') fTdB.geometry ('1450x900+%d+%d' % (55, 55)) List_Tdb = [] # enregistre l'element selectionné oTdB = ttk.Notebook (fTdB) oTdB.place (x=5, y=5, width=1420, height=870) oAT = ttk.Frame (oTdB) oAT.pack () oB = ttk.Frame (oTdB) oB.pack () oTdB.add (oAT, text=" RDV AT ") oTdB.add (oB, text=" RDV Bilan et autres ") ListeMois = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"] year = datetime.now ().strftime ("%Y") # année actuelle month = datetime.now ().strftime ("%B") # mois actuel # onglet AT ListeMoisAT = ttk.Combobox (oAT, values=ListeMois) ListeMoisAT.place (x=140, y=20, width=125) ListeMoisAT.set (month) Entry_AnneeAT = Entry (oAT) Entry_AnneeAT.place (x=280, y=20, width=50) Entry_AnneeAT.insert (0, year) BoutOk = Button (oAT, text='Ok', bg="darkblue", fg="yellow", command=Affiche_lancement) BoutOk.place (x=360, y=15, width=50) tree_TdB = ttk.Treeview (oAT, columns=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), height=5, show="headings", style="mystyle.Treeview") tree_TdB.place (x=5, y=50, width=1400, height=750) #je ne mets pas tout le code Affiche_lancement()
que par ma femme et moi-même et n'ont pas vocation à être diffusés.
Ainsi j'aimerais, si possible, une aide, ou un descriptif de ce qui ne va pas.
En vous souhaitant une agréable journée, je vous remercie par avance.
Partager