Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tkinter (Python)

Défilement d'une page

    27 novembre 2021 à 11:53:25

    Bonjour, je cherche depuis un petit moment comment faire défiler une page tkinter avec sa souris et cela sans utiliser de barre de défilement .Est que quelqu'un ici serai comment faut t'il s'y prendre 
    Merci d’avance pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2021 à 12:27:59

      Tkinter est un module pour IHM simple d'utilisation, mais en ce qui concerne ses capacités à faire des manipulations complexes, il est très limité !

      Pour des choses plus intéressantes à faire sur son IHM, mieux vaut utiliser PyQt ou PySide par exemple.

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        27 novembre 2021 à 12:36:06

        Bonjour,

        Moi, j'ai déjà fait ça avec Tkinter pour faire défiler les éléments d'une ListBox avec la roulette de la souris

        Il faut bien sur afficher la barre, (créer un widget Scrollbar), et configurer la Listbox avec son paramètre yscrollcommand egal à nom_de_la_scrollbar.set

        "Est que quelqu'un ici serai comment faut t'il s'y prendre"

        "Quelqu'un saurait il comment s'y prendre ?"   :-)   :-)

        -
        Edité par Phil_1857 27 novembre 2021 à 12:37:28

        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2021 à 13:24:35

          Phil_1857 a écrit:

          Il faut bien sur afficher la barre, (créer un widget Scrollbar), et configurer la Listbox avec son paramètre yscrollcommand egal à nom_de_la_scrollbar.set

          Du coup tu es HS par rapport à sa demande si je comprends bien ?

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            27 novembre 2021 à 13:57:02

            Bonjour Fred,

            HS ?

            Ah ok, je vois : la demande est : "sans utiliser la barre de défilement"

            En fait, dans ma solution, on affiche la barre MAIS on n'est pas obligé de l'utiliser: on peut faire défiler avec la roulette de la souris

            C'est un exemple, après, voir ce que veut Lilian exactement ...

            Au fait, pendant que je te tiens, et que l'on est dans les acronymes, qui signifie PO souvent utilisé ici pour désigner le demandeur ?

            -
            Edité par Phil_1857 27 novembre 2021 à 14:00:59

            • Partager sur Facebook
            • Partager sur Twitter
              27 novembre 2021 à 14:09:08

              Pour déplacer la view affichée par un widget scrollable, il y a les méthodes [x|y]view_goto/[x|y]view_scrol.

              Petit exemple vite fait:

              import tkinter as tk
              
              text = tk.Text(height=10)
              text.pack()
              for i in range(20):
                  text.insert('end', f'line {i}\n')
              
              def move_up():
                  text.yview_scroll(10, 'pixels')
              
              tk.Button(text='up', command=move_up).pack()
              
              tk.mainloop()
              

              qui bouge la view vers le haut de 10 pixels lorsqu'on clique sur le bouton.



              • Partager sur Facebook
              • Partager sur Twitter
                27 novembre 2021 à 14:21:18

                Phil_1857 a écrit:

                Au fait, pendant que je te tiens, et que l'on est dans les acronymes, qui signifie PO souvent utilisé ici pour désigner le demandeur ?

                PO : Posteur Originel

                HS : Hors Sujet

                Phil_1857 a écrit:

                En fait, dans ma solution, on affiche la barre MAIS on n'est pas obligé de l'utiliser: on peut faire défiler avec la roulette de la souris

                C'est à mon sens une demande liée à l'esthétisme de l'IHM.

                LilianSafar a écrit:

                je cherche depuis un petit moment comment faire défiler une page tkinter avec sa souris et cela sans utiliser de barre de défilement

                Qu'appelles-tu page tkinter ?

                • Partager sur Facebook
                • Partager sur Twitter

                Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                  27 novembre 2021 à 16:11:44

                  fred1599 a écrit:

                  Qu'appelles-tu page tkinter ?


                  Sur mon petit exemple, j'aurais pu écrire text.yview_scroll(1, 'pages'). tkinter a une idée de ce que sont des pages... peut être pas satisfaisante (si on teste) mais çà existe.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 novembre 2021 à 19:05:10

                    mps a écrit:

                    Pour déplacer la view affichée par un widget scrollable, il y a les méthodes [x|y]view_goto/[x|y]view_scrol.

                    Petit exemple vite fait:

                    import tkinter as tk
                    
                    text = tk.Text(height=10)
                    text.pack()
                    for i in range(20):
                        text.insert('end', f'line {i}\n')
                    
                    def move_up():
                        text.yview_scroll(10, 'pixels')
                    
                    tk.Button(text='up', command=move_up).pack()
                    
                    tk.mainloop()
                    

                    qui bouge la view vers le haut de 10 pixels lorsqu'on clique sur le bouton.

                    Cette méthode fonctionne que pour l'item Text d'ailleurs la méthode .yview_scroll n'es ici pas utile pour faire défiler la page avec la souris (Text semble pouvoir être défilé de base) 

                    ici un bous de code permettant de faire défiler Text  

                    from tkinter import *
                    
                    fenetre= Tk()
                    
                    text = Text(height=10)
                    text.pack()
                    
                    for i in range(20):
                        text.insert('end', f'line {i}\n')
                     
                     
                    fenetre.mainloop()

                    Est que du coup tu serai faire la même chose pour un objet Canvas ou tu pense que c'est impossible

                    fred1599 a écrit:

                    Tkinter est un module pour IHM simple d'utilisation, mais en ce qui concerne ses capacités à faire des manipulations complexes, il est très limité !

                    Pour des choses plus intéressantes à faire sur son IHM, mieux vaut utiliser PyQt ou PySide par exemple.

                    ok mais c'est que j'ai déjà pas mal avancé sur ce que je voulais faire donc ca m'embêterai de tout recommencer mais de toute façons si je suis bloqué je serai bien obligé de laisser tomber tkinter

                    (Oui je ne veux pas de barre de défilement pour une raison esthétique )





                    -
                    Edité par LilianSafar 27 novembre 2021 à 19:14:03

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 novembre 2021 à 19:48:17

                      LilianSafar a écrit:

                      Est que du coup tu serai faire la même chose pour un objet Canvas ou tu pense que c'est impossible

                      Le Canvas étant un widget scrollable,il y a les méthodes [x|y]view_goto/[x|y]view_scroll: on peut faire la même chose. Vous avez essayé quelque chose et çà ne marche pas?

                      LilianSafar a écrit:

                      ici un bous de code permettant de faire défiler Text

                      Chez moi votre code ne fait rien défiler du tout. D'ailleurs, il n'y a rien de codé pour que ça le fasse (comme une scrollbar par exemple).

                      -
                      Edité par mps 27 novembre 2021 à 20:37:13

                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 novembre 2021 à 22:37:44

                        LilianSafar a écrit:

                        Est que du coup tu serai faire la même chose pour un objet Canvas ou tu pense que c'est impossible


                        Oui, c'est sans doute faisable, tu peux scroller sans barre de défilement, "automatiquement" ou avec les touches du clavier, j'avais fait des essais ICI et . Donc sans doute aussi avec la molette de la souris, il suffit de gérer l'événement.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 novembre 2021 à 10:18:28







                          -
                          Edité par LilianSafar 28 novembre 2021 à 10:22:40

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Tkinter (Python)

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          • Editeur
                          • Markdown