Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/02/2008, à 20:25

Linkid

[Python] Canvas + ScrollBar + Tkinter

Bonjour,
Je suis actuellement en train de faire une petite application en python en utilisant Tkinter. Je viens de créer un Canvas can1.
Le problème est que ce qu'il y a à  l'intérieur du canvas est très voire trop grand pour que tout soit affiché à  l'écran... C'est pourquoi j'ai pensé à  mettre des scrollbars pour le canvas. J'ai fait quelques recherches et j'ai découvert qu'il y a un module dans Pmw.
Puis plus tard, j'ai découvert qu'on peut faire sans... voici le bout de code trouvé sur un forum http://www.commentcamarche.net/forum/af … r-et-class :

from Tkinter import *

class AutoScrollbar(Scrollbar):
    def set(self, lo, hi):
        if float(lo) <= 0.0 and float(hi) >= 1.0:
            # grid_remove is currently missing from Tkinter!
            self.tk.call("grid", "remove", self)
        else:
            self.grid()
        Scrollbar.set(self, lo, hi)
    def pack(self, **kw):
        raise TclError, "cannot use pack with this widget"
    def place(self, **kw):
        raise TclError, "cannot use place with this widget"

root = Tk()
root.title('Mon application')

vscroll = AutoScrollbar(root)
hscroll = AutoScrollbar(root, orient=HORIZONTAL)

can1 = Canvas(root, bg="white", xscrollcommand=hscroll.set, yscrollcommand=vscroll.set)
can1.grid(row=1, column=0, sticky=N+S+E+W)

can1.create_rectangle(10, 10, 3*20, 3*20, fill="yellow")
can1.create_rectangle(100, 100, 30*20, 3*2000, fill="yellow")

vscroll.config(command=can1.yview)
hscroll.config(command=can1.xview)

vscroll.grid(row=1, column=1, sticky=N+S)
hscroll.grid(row=2, column=0, sticky=E+W)
can1.config(scrollregion=can1.bbox("all"))

root.mainloop()

Le truc, c'est que j'aimerais bien remplacer les grid par des pack car dans mon appli, je n'utilise que des pack... Donc pour cela, j'aurais besoin d'aide... J'avais bien pensé à  enlever les deux dernières def de ma class et remplacer tous les grid par des pack, mais les scrollbar se retrouvent en dehors du canvas... donc problème !

Merci d'avance !
Linkid


Ubuntu 9.10 : "The Karmic Koala"... Un monde de rêve rempli d'animaux !
Notre liberté ne se limite pas à Windows...

Hors ligne