Widget tkinter

Description

Voici deux widget Tkinter qui trainaient dans un dossier sur mon PC. Je me suis donc dit que j'allais faire profiter les autres en les postant ici !

Il y a:
- une ProgressBar: celle-ci s'utilise comme un canvas en ce qui concerne la taille et la couleur de fond

- un autre widget que j'ai appelé Parcourir (si quelqu'un trouve un meilleur nom... ^^) : Je ne saurais le décrire.
Et puis un test est tellement mieux qu'une longue description.

Alors je vous invite à les tester et surtout à commenter cette source :D

Source / Exemple :


# -*- coding: cp1252 -*-
from Tkinter import *
from os import getcwd
from tkFileDialog import askdirectory
from time import *

class Parcourir(Frame):
    def __init__(self, master = None, command = None, **kw):
        Frame.__init__(self, master, **kw)

        self.chemin = StringVar()
        self.chemin.set(getcwd())
        
        self.command = command

        self.entree_chemin = Entry(self, text = self.chemin, width = 70)
        self.entree_chemin.grid(row = 1, column = 1, padx = 5, pady = 5)

        self.bouton = Button(self, text = "Parcourir", command = self.parcours)
        self.bouton.grid(row = 1, column = 2, padx = 5, pady = 5)

    def parcours(self):
        chemin = askdirectory()
        if chemin != '':
            self.chemin.set(chemin)
            if self.command != None:
                self.command()

    def get(self):
        return str(self.chemin.get())

class ProgressBar(Canvas):
    def __init__(self, master = None, **kw):
        Canvas.__init__(self, master,**kw)
        self.largeur = float(self.config()["width"][-1])+2
        self.hauteur = float(self.config()["height"][-1])+2
        
        self.valeur = 0
        self.barre = self.create_rectangle(0,0, self.largeur*self.valeur/100.,self.hauteur, fill = "Light Blue")
        self.texte = self.create_text(self.largeur/2. ,self.hauteur/2., text = str(int(self.valeur))+" %")

    def set_value(self, valeur):
        if 0<valeur<=100:
            self.valeur = valeur
            self.coords(self.barre, 0,0, self.largeur*self.valeur/100.,self.hauteur)
            valeur = str(float(valeur))
            self.itemconfig(self.texte, text = str(valeur)[:str(valeur).index('.')+3]+" %")
        else:
            raise ValueError, "0<valeur<=100"

def demo_bar():
    fen_bar = Toplevel(fen)
    fen_bar.grab_set()

    progress = ProgressBar(fen_bar, height = 25)
    progress.grid(row = 1, column = 1, sticky = W+E)

    for i in range(1,101):
        progress.set_value(i)
        fen_bar.update()
        sleep(0.1)
    

def demo_parcours():
    global label_parcours, parcours
    
    fen_parcours = Toplevel(fen)
    fen_parcours.grab_set()

    label_parcours = Label(fen_parcours)
    label_parcours.grid(row = 0, column = 1)

    parcours = Parcourir(fen_parcours, command = modify_label, border = 2, relief = RAISED)
    parcours.grid(row = 1, column = 1)
    modify_label()
    

def modify_label():
    label_parcours.config(text = parcours.get())

if __name__ == '__main__':
    fen = Tk()

    Button(fen, text = "Démo ProgressBar", command = demo_bar).grid(row = 1, column = 1, padx = 5, pady = 5)
    Button(fen, text = "Démo Parcours", command = demo_parcours).grid(row = 2, column = 1, padx = 5, pady = 5)

    fen.mainloop()

Conclusion :


Ben... aucune conclusion à faire

Codes Sources

A voir également

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.