Bonjours, J'aimerai faire un programme qui m'afficherait un pourcentage dans une fenetre tkinter et qui pourrait s'actualiser dans un intervalle temps. J'ai réussi à afficher ce que je veux (en partant d'un programme déjà existant) mais je suis obligée de l'afficher dans une nouvelle fenêtre. Je ne sais pas comment appeler la fenêtre dans la classe pour ne pas avoir à ouvrir à chaque fois une nouvelle fenêtre.
J'ai voulu essayer en appelant ma fenêtre par "global" mais Python me dit alors que la variable correspondant à la fenêtre n'est pas définie.


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
from tkinter import*    
 
# The graphical interface
class Tkhanoi:
 
    # Create our objects
    def __init__(self, n, bitmap = None):
        self.n = n
        self.tk = tk = Tk()
        self.canvas = c = Canvas(tk)
        c.pack()
        width, height = tk.getint(c['width']), tk.getint(c['height'])
 
        # Add background bitmap
        if bitmap:
            self.bitmap = c.create_bitmap(width//2, height//2,
                                          bitmap=bitmap,
                                          foreground='blue')
 
        # Generate pegs (pince à linge)
        pegwidth = 10
        pegheight = height//2
        pegdist = width//1
        x1, y1 = (pegdist-pegwidth)//2, height*1//3
        x2, y2 = x1+pegwidth, y1+pegheight
        self.pegs = []
        p = c.create_rectangle(x1, y1, x2, y2, fill='white')
        self.pegs.append(p)
        self.tk.update()
 
        # Generate pieces
        pieceheight = pegheight//32  #épaisseur des carrés 
        maxpiecewidth = pegdist*2//3
        minpiecewidth = 2*pegwidth
        self.pegstate = [[], [], []]
        self.pieces = {}
        x1, y1 = x1, y2-pieceheight-2 #<- taille de la barre adroite
        x2, y2 = x2, y1+pieceheight   #<-taille de la barre à gauche
        dx = (maxpiecewidth-minpiecewidth) // (2*max(1, n-1))
        for i in range(n, 0, -1):
            p = c.create_rectangle(x1, y1, x2, y2, fill='red')
            self.pieces[i] = p
            self.pegstate[0].append(i)
            x1, x2 = x1, x2
            y1, y2 = y1 - pieceheight-2, y2-pieceheight-2
            self.tk.update()
            self.tk.after(25)
 
 
    # Reporting callback for the actual hanoi function
    def report(self, i, a, b):
        if self.pegstate[a][-1] != i: raise RuntimeError # Assertion
        del self.pegstate[a][-1]
        p = self.pieces[i]
        c = self.canvas
 
        # Lift the piece above peg a
        ax1, ay1, ax2, ay2 = c.bbox(self.pegs[a])
        while 1:
            x1, y1, x2, y2 = c.bbox(p)
            self.tk.update()
 
 
        # Move it towards peg b
        bx1, by1, bx2, by2 = c.bbox(self.pegs[b])
        newcenter = (bx1+bx2)//2
        while 1:
            x1, y1, x2, y2 = c.bbox(p)
            center = (x1 + x2)//2
            self.tk.update()
 
        # Move it down on top of the previous piece
        pieceheight = y2-y1
        newbottom = by2 - pieceheight*len(self.pegstate[b]) - 2
        while 1:
            x1, y1, x2, y2 = c.bbox(p)
            self.tk.update()
 
        # Update peg state
        self.pegstate[b].append(i)
 
 
 
 
def main():
    import sys
    n = int(input("Donnez un nombre entre 1 et 10 : "))
 
    if sys.argv[2:]:
        bitmap = sys.argv[2]
        if bitmap[0] == '@': bitmap = bitmap[1:]
        else: bitmap = '@' + bitmap
    else:
        bitmap = None
 
    h = Tkhanoi(n, bitmap)
 
 
 
 
if __name__ == '__main__':
    a = int(input( "Rentrez un nombre entre 1 et 10 : "))
    while a != 0:
        main()
        a = a - 1
Merci d'avance ^^