Tkinter [Résolu]

StabiloHB 3 Messages postés lundi 11 juillet 2016Date d'inscription 11 juillet 2016 Dernière intervention - 11 juil. 2016 à 15:13 - Dernière réponse : StabiloHB 3 Messages postés lundi 11 juillet 2016Date d'inscription 11 juillet 2016 Dernière intervention
- 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()
Afficher la suite 

2 réponses

Répondre au sujet
StabiloHB 3 Messages postés lundi 11 juillet 2016Date d'inscription 11 juillet 2016 Dernière intervention - 11 juil. 2016 à 15:18
0
Utile
J'ai oublié de préciser, pour start le programme il faut rentrer dans le Shell : fenetre_principale()
Commenter la réponse de StabiloHB
StabiloHB 3 Messages postés lundi 11 juillet 2016Date d'inscription 11 juillet 2016 Dernière intervention - 11 juil. 2016 à 18:13
0
Utile
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
Commenter la réponse de StabiloHB

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.