OK, le problème est tout bête : vous utilisez
deux fois Tk().
La documentation officielle de Tkinter n'est pas très explicite à ce sujet :
http://infohost.nmt.edu/tcc/help/pub...web/index.html
L'objet
Tk() n'est pas une fenêtre principale, c'est en réalité le proxy qui sert d'interface entre le GUI écrit en Tcl/Tk et Python (d'où le Tkinter = Tk interface) - disons pour faire simple qu'à chaque fois que vous appelez Tk(), vous appelez un interpréteur Tkinter à part entière.
Le fait que cet interpréteur Tk() appelle à son tour une fenêtre principale
Toplevel() de manière totalement transparente pour le programmeur est un autre problème.
Pour un programme donné, vous n'avez besoin que d'
un seul Tk() à la fois et rien de plus.
Donc si c'est une fenêtre autonome que vous voulez, vous devez modifier
master = Toplevel() dans votre fonction
def fonc().
Exemple (lien "Sélectionner tout" puis copiez/coller dans un fichier script de test puis lancez le fichier pour voir ce que cela donne) :
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
| #!/usr/bin/env python3
# -*- coding: utf-8 -*-
from tkinter import *
def fonc ():
"""
décrivez ici ce que fait votre fonction
exemple:
test objet Checkbutton()
"""
master = Toplevel()
var = IntVar()
# sous-fonction
def actualiser ():
label1.configure(text=var.get())
# end def
label1 = Label(master)
label1.pack()
Checkbutton(master, text="Bouton", variable=var, command=actualiser).pack()
actualiser()
# end def
# programme principal
root = Tk()
root.title("test")
Button(root, text="Test", command=fonc).pack(padx=50, pady=20)
root.mainloop() |
Et là, ça fonctionnera.
@+.
Partager