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.
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'))
Je peux ensuite avec un tag.configure, gérer mes background et foreground.
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.

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()
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
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()
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
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.