IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Projeter tableau excel


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Projeter tableau excel
    Bonjour , j'essaye d'automatiser la recherche de stock négatif pour un excercice , les données se trouvent sur un ficher excel et après les avoir traitées (ce qui fonctionne) , j'essaye d'afficher les données trouvées dans une nouvelle fenêtre tkinter , cependant je ne vois pas comment projeter ce qui doit être affiché avec ce bout de code) j'ai une base (que j'ai pris sur ce forum) mais je ne vois pas comment l'adapter , si quelqu'un pouvais me proposer des idéées svp

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
     
    ### titre des colonnes
    columns = [
        'Code','Produit','Achat','M.Achat','Vente',
        'M.CA','Marge','%CA','Stock'
    ]
     
     
    fonts = {
        'normal': 'arial 9',
        'bold': 'arial 9 bold',
        'titre': 'Helvetica 10 bold',
        'titrepage': 'arial 30'
        }
     
     
    def open_toplevelpar():
        w = Toplevel()
        w.focus_force()
        label = tk.Label(w, text="Stock", font=fonts['titrepage'])
        label.grid(row=0,column=0,columnspan=len(entetecolon),sticky=tk.W+tk.E)
     
    ###selection de produit
    def do_select(event):
        global current_selection
     
        widget = event.widget
        infos = widget.grid_info()
        row = infos['row']
        master = infos['in']
     
        if current_selection is not None and current_selection != row:
            for w in master.grid_slaves(row=current_selection):
                w.configure(font=fonts['normal'])
        for w in master.grid_slaves(row=row):
            w.configure(font=fonts['bold'])
        current_selection = row
     
     
     
     
    def stockss1():
        def mon_traitementstoc():
            global nb1
            code=[]
            produit=[]
            achat=[]
            machat=[]
            vente=[]
            mca=[]
            marge=[]
            pourcenca=[]
            stock=[]
            tab=[]
            stocku = askstring('Stock', 'Entrer votre valeur de Stock')
            stocku=int(stocku)
            feuille = load_workbook(chemin1)
            feuille_calc = feuille.active
            a3 = feuille_calc.cell(row=2, column=8)
            a4=feuille_calc.cell(row=2, column=2)
            stock=feuille_calc.cell(row=2, column=9)
            c=0
            while feuille_calc.cell(row=2+c, column=2).value != None: 
                if stock.value > stocku:
                    c=c+1
                else :
                    print (feuille_calc.cell(row=2+c, column=2).value)
                    print (feuille_calc.cell(row=2+c, column=1).value)
                    code=code+[(feuille_calc.cell(row=2+c, column=1)).value]
                    produit=produit+[(feuille_calc.cell(row=2+c, column=2)).value]
                    achat=achat+[(feuille_calc.cell(row=2+c, column=3)).value]
                    machat=machat+[(feuille_calc.cell(row=2+c, column=4)).value]
                    vente=vente+[(feuille_calc.cell(row=2+c, column=5)).value]
                    mca=mca+[(feuille_calc.cell(row=2+c, column=6)).value]
                    marge=marge+[(feuille_calc.cell(row=2+c, column=7)).value]
                    pourcenca=pourcenca+[(feuille_calc.cell(row=2+c, column=8)).value]
                    stock=stock+[(feuille_calc.cell(row=2+c, column=9)).value]
                    c=c+1
            tab.append(code)
            tab.append(produit)
            tab.append(achat)
            tab.append(machat)
            tab.append(vente)
            tab.append(mca)
            tab.append(marge)
            tab.append(pourcenca)
            tab.append(stock)
     
            w = Toplevel()#w c'est la nouvelle fenetre ouverte après coût
            w.focus_force()
            label = tk.Label(w, text="Gestion des Stocks", font=fonts['titrepage'])
            label.grid(row=0,column=0,columnspan=len(columns),sticky=tk.W+tk.E)
            for i in range(len(columns)):
                label = tk.Label(w, text=columns[i], font=fonts['titre'])
                label.grid(row=1, column=i, padx=0)
            for k in range(0,len(columns)):
                for j in range(0,len(tab)):
                    color = ['grey75', 'white'][j % 2]
                    label = tk.Label(w, text="%s" % (tab[k][j]),
                                    bg=color, width=20, anchor='w',
                                font=fonts['normal'])
            label.grid(row=j, column=i, padx=0)
            w.bind('<1>', do_select)
            nb1=c
     
        return mon_traitementstoc
     
     
     
    #fenetre principale
    Mafenetre = Tk()
    Mafenetre.title("Gestion des Stocks")
    menubar = Menu(Mafenetre)
     
    #menu fonction
    menufonction = Menu(menubar,tearoff=0)
    """menufonction.add_command(label="paretto",command=paretto())"""
    menufonction.add_command(label="stockdesécurité1",command=stockss1())
    menubar.add_cascade(label="fonction", menu=menufonction)
    Mafenetre.config(menu=menubar)
    #====Frames===#
    # frame 1
    l = LabelFrame(Mafenetre, text="Gestion des Stocks V1.3", padx=17, pady=17)
    l.pack(fill="both", expand="yes")
    # frame 2
    #===Boutons===#
    button_choice = Button(l, text='Magasin 1', command=ouvrir)
    button_choice.pack()
    je sais que mon code n'est pas très estétique (et je m'en excuse) mais je n'en suis qu'au début
    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Points : 49
    Points
    49
    Par défaut
    utiliser la methode x.set() pour afficher les résultats sur tkinter

    tu declares ton x comme StringVar() et tu l'utilises comme la textvariable de ton widget

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci pour la réponse rapide , mais je n'arrive pas à afficher mes donnée a cause d'une érreur d'indice (avec l'érreur suivante : list index out of range)

    au niveau de cette ligne:
    label = tk.Label(w, text="%s" % (tab[k][j]),

    et c'est cela que je ne comprend pas

  4. #4
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    peut-être qu'un print(tab[k][j]) te donnerait l'explication.
    Pas d'aide par mp.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    j'obtiens ceci , je trouve quand meme bizard d'avoir les noms des produits et ensuite le résultat de mon print
    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
     
     
            for i in range(len(columns)):
                label = tk.Label(w, text=columns[i], font=fonts['titre'])
                label.grid(row=1, column=i, padx=0)
            for k in range(0,len(columns)-1):
                for j in range(0,len(tab)-1):
                    print(k)
                    print(j)
                    print (tab[k][j])
                    color = ['grey75', 'white'][j % 2]
                    label = tk.Label(w, text="%s" % (tab[k][j]),
                                    bg=color, width=20, anchor='w',
                                font=fonts['normal'])
            label.grid(row=j, column=i, padx=0)
            w.bind('<1>', do_select)
    lait fraise
    369106
    FRAISIER
    386405
    Chocolat
    406956
    foret noir
    406961
    0
    0
    369106
    0
    1
    386405
    0
    2
    406956
    0
    3
    406961
    0
    4

    je ne sais pas quoi penser , j'ai changer l'indice du j (ça me parait la solution la plus cohérente ) mais ça ne fonctionne pas

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    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
     
     
     
     
    fonts = {
        'normal': 'arial 9',
        'bold': 'arial 9 bold',
        'titre': 'Helvetica 10 bold',
        'titrepage': 'arial 30'
        }
     
    columns = [
        'Code','Produit','Achat','M.Achat','Vente',
        'M.CA','Marge','%CA','Stock']
     
    #nouvel fenetre
     
    def open_toplevelpar():
        w = Toplevel()
        w.focus_force()
        label = tk.Label(w, text="Liste des marques", font=fonts['titrepage'])
        label.grid(row=0,column=0,columnspan=len(entetecolon),sticky=tk.W+tk.E)
     
     
    tab=[[369106, '386405', '406956', '406961'], ['lait fraise', 'FRAISIER ', 'Chocolat', 'foret noir'], [0, 0, 0, 0], [0, 0, 0, 0], [125, 725, 199, 35], [37, 266, 262, 22], [11, 12, 5682, 71], [0.83, 0.58, 0.58, 0.5]]
     
    w = Toplevel()#w nouvelle fenetre 
    w.focus_force()
    label = tk.Label(w, text="Gestion des Stocks", font=fonts['titrepage'])
    label.grid(row=0,column=0,columnspan=len(columns),sticky=tk.W+tk.E)
    for i in range(len(columns)):
        label = tk.Label(w, text=columns[i], font=fonts['titre'])
        label.grid(row=1, column=i, padx=0)
        for k in range(len(columns)):
            for j in range(len(tab)):
                color = ['grey75', 'white'][j % 2]
                label = tk.Label(w, text="%s" % (tab[k][j]),
                                    bg=color, width=20, anchor='w',
                                font=fonts['normal'])
            label.grid(row=j, column=i, padx=0)
            w.bind('<1>', do_select)
    en résumé , j'essaye de faire fonctionner ce code (il manque quelques petits bouts) je ne vois vraiment pas d'ou vient le problème

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Points : 49
    Points
    49
    Par défaut
    utiliser le csv c'est mieux , il ya tout un module csv tu peux gérer tes données de la manière que tu veux et plus facile , voir documentation csv

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    merci pour vos réponse , ceci dit ,vous connaissez un moyen d'afficher simplement un tableau avec tkinter (muni d'une scrollbar)

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par johnyx971 Voir le message
    merci pour vos réponse , ceci dit ,vous connaissez un moyen d'afficher simplement un tableau avec tkinter (muni d'une scrollbar)
    Un ttk.Treeview pourrait faire l'affaire.
    Mais il serait mieux d'ouvrir une nouvelle discussion.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    merci beaucoup pour vos réponses , je testerais avec ttk.Treeview et referais une discussion si j'ai un problème.

Discussions similaires

  1. [PR-2010] Importation mappage d'un tableau Excel vers un projet MSP
    Par rob1_art dans le forum Project
    Réponses: 0
    Dernier message: 18/07/2014, 16h18
  2. [VBA-E]créer un tableau Excel en vba
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/01/2006, 16h06
  3. Migrer un projet VBA Excel vers VB
    Par Phoon0 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2005, 11h09
  4. Aide débutant instruction VBA tableau Excell
    Par damien33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2005, 10h31
  5. [VC++6]intégrer un tableau excel
    Par albireo29 dans le forum MFC
    Réponses: 2
    Dernier message: 16/09/2004, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo