2017-06-30 3 views
0

Je voudrais poser une barre de défilement invisible sur un Treeview J'utilise un pi de framboise et j'ai un petit écran tactile et je voudrais donc utiliser efficacement l'espace J'ai dû dimensionner ma barre de défilement comme je ne pouvais pas comprendre comment faire "glisser" -scrolling dans une arborescence possible C'est pourquoi j'ai maintenant très peu d'espace et la police est presque trop petite Yat-il un moyen de rendre une barre de défilement invisible, mais toujours utilisable lors de la pose sur un autre widget avec par exemple. la fonction de lieu?Python3 tkinter poser barre de défilement invisible sur le widget?

Répondre

1

Vous n'avez pas besoin de barres de défilement pour faire défiler. Tous les widgets scrollables ont une API qui est utilisée pour le défilement: les méthodes xview et yview. La barre de défilement est juste un moyen pratique d'appeler ces méthodes, mais ce n'est pas le seul moyen. Je ne sais pas quels événements un glissement va envoyer, mais vous pouvez lier à ces événements et appeler directement les méthodes xview et/ou yview vous-même. Par exemple, supposons pour l'instant qu'un contact est l'événement <B1> et qu'un balayage est l'événement <B1-Motion>. Vous pouvez faire défiler avec un mouvement balayant comme ceci:

class Example: 
    def __init__(self): 
     ... 
     self.tree = ttk.Treeview(...) 
     self.tree.bind("<B1>", self.start_swipe) 
     self.tree.bind("<B1-Motion>", self.on_swipe) 
     ... 

    def start_swipe(self, event): 
     self.last_y = event.y 

    def on_swipe(self, event): 
     # only do the scrolling if the swipe is 10 pixels or more 
     if abs(event.y - self.swipe_start) < 10: 
      return 

     # compute whether we are scrolling up or down 
     delta = -1 if event.y > self.last_y else 1 

     # remember this location for the next time this is called 
     self.last_y = event.y 

     # do the scroll 
     self.tree.yview_scroll(delta, "units") 
+0

J'ai aussi pensé à cela, mais je ne peux pas trouver des informations sur les événements tactiles partout :( – marcoPolio

+0

@marcoPolio: il y a une bonne chance réelle qui touchent les événements sont tout simplement mis en correspondance Essayez le code ci-dessus et voyez si cela fonctionne –

+0

darn vous avez raison .. semble fonctionner, merci beaucoup !! – marcoPolio