Tkinter

Résolu
StabiloHB Messages postés 3 Date d'inscription lundi 11 juillet 2016 Statut Membre Dernière intervention 11 juillet 2016 - Modifié par KX le 11/07/2016 à 19:02
StabiloHB Messages postés 3 Date d'inscription lundi 11 juillet 2016 Statut Membre Dernière intervention 11 juillet 2016 - 11 juil. 2016 à 18:13
Bonjour,
Je suis sur un programme qui me pose un certain nombres de problème et quand j'en résous un, un autre apparait..
Je vous expliques : J'ai une fenetre de base avec un bouton qui lance une deuxieme fenetre avec une scrollbar et des chackbuton. Sur la deuxieme fenetre il y a un autre bouton qui commande la récupération des checkbuton, ferme cette fenetre et je voudrais continuer sur la premiere fenetre (où j'y rajouterai d'autres choses).
L'erreur que j'ai ici (à ce stade) est qu'il me dit qu'un Tk() n'est pas callable par une fonction et ca m'embete...

Je vais me débrouiller pour que vous puissiez le faire tourner (je travail avec des tableurs excels)
Merci d'avance.
PS : excusez moi d'avance si il y a des fautes d'orthographes :)


import tkinter as tk
column=[['', '', 'Vh inf', 'Vh inf avec insert surmoule', 'Vh inf avec joint', 'Vh inf avec insert surmoule visible']]
 # un exemple de liste que je peux utiliser

def checkbox_get():
    global checklist                                                                                       
 #Globalise la liste checklist pour ne pas la mettre en argument pour le bouton
    checklist=[]
    for i in range(2,len(column[0])):
        print(globals()['var%s' % i].get())
        checklist.append(globals()['var%s' % i].get())                                                     
 #récupere les variable 0 ou 1 si la case est coché de toutes les variables
    fenetre.destroy()                                                                                      
 #ferme la fenetre
    fenetre_principale()
    return checklist

def main():                                                                                                
#Le main pour le VH inf pour l'instant qui permettera de choisir dans la liste.
    fenetre_principale.destroy()
    global fenetre,column                                                                                         
 #Permet de globaliser la fenetre pour l'utiliser dans la fonction checkbox_get sans la mettre en argument
    #sheet_function(i)                                                                                     
  #Instore la lecture dans la feuille 'i'
    #lire_colone(sheet, column,i)                                                                           
 #lis les valeurs de la colonne 'i'
    x=len(column[0])
    fenetre = tk.Tk()                                                                                      
 #Initialise la fenetre
    Frame1 = tk.Frame(fenetre)                                                                            
  #Instore 2 frame une pour la scrollbar et l'autre pour le bouton Lancer (get des value)
    Frame1.pack(side="left")
    Frame2 = tk.Frame(fenetre)
    Frame2.pack(side="right")
    vsb=tk.Scrollbar(Frame1,orient="vertical")                                                             
 #La scrollbar
    text=tk.Text(Frame1,width=40, height=20, yscrollcommand=vsb.set)                                       
 #Pour que les textes suivent la ScrollBar
    vsb.config(command=text.yview)
    vsb.pack(side="right", fill="y")
    text.pack(side="left", fill="both", expand=True)
    for i in range(2,len(column[0])):                                                                      
 #création des CheckButtons dans la ScrollBat
        globals()['var%s' % i]=tk.IntVar()                                                                
  #créé une variable pour chaques i, ex : var2,var3,var4 ect ...
        bg = 'grey'
        if i % 2 == 0:
            bg='white'
        cb=tk.Checkbutton(Frame1,text=column[0][i],bg=bg,variable=globals()['var%s' % i])
        text.window_create("end", window=cb)
        text.insert("end", "\n")                                                                          
  #Pour avoir une CheckButton par ligne '\n'
    tk.Button(Frame2, text="Valider", command=checkbox_get).pack()                                         
 #Bouton avec la commande de get des checkbuttons
    fenetre.mainloop()

def fenetre_principale():
    global fenetre_principale
    fenetre_principale=tk.Tk()
    tk.Button(fenetre_principale, text="Vh inf", command=main).pack()
    fenetre_principale.mainloop()

2 réponses

StabiloHB Messages postés 3 Date d'inscription lundi 11 juillet 2016 Statut Membre Dernière intervention 11 juillet 2016
11 juil. 2016 à 15:18
J'ai oublié de préciser, pour start le programme il faut rentrer dans le Shell : fenetre_principale()
0
StabiloHB Messages postés 3 Date d'inscription lundi 11 juillet 2016 Statut Membre Dernière intervention 11 juillet 2016
11 juil. 2016 à 18:13
La solution a été trouvée, il suffit d'ouvrir la deuxieme fenetre en tant que fenetre secondaire avec la commande Toplevel() au lieu de Tk()

Bonne continuation
0
Rejoignez-nous