Il y a un bug d'interface graphique étrange dans tkinter sur l'interaction entre le pointeur de la souris et un tkinter.Scrollbar
. Le curseur de la barre de défilement n'est pas à l'emplacement indiqué graphiquement et il ne se déplace pas à la même vitesse que le curseur de la souris. Cela le rend très difficile à utiliser. Voici un exemple de code, emprunté à http://effbot.org/tkinterbook/scrollbar.htm:Tkinter bug Scrollbar sur mac avec ActiveTcl 8.5.18
#!/usr/bin/env python3 # python 3.4.3 using ActiveTcl 8.5.18
#!/usr/bin/env python # python 2.7.10 using ActiveTcl 8.5.18
#!/usr/bin/python # os-x-native python 2.7.5 using os-x-native Tcl 8.5.9 [WORKS]
# Example from http://effbot.org/tkinterbook/scrollbar.htm
try:
# Python2
import Tkinter as tk
except ImportError:
# Python3
import tkinter as tk
import tkinter.ttk as ttk
import sys
master = tk.Tk()
# print version info:
sys.stdout.write("Python: %s.%s.%s\nTcl: %s\n" % (sys.version_info[0], sys.version_info[1], sys.version_info[2], tk.Tcl().eval("info patchlevel")))
# scrollbar = ttk.Scrollbar(master)
scrollbar = tk.Scrollbar(master)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox = tk.Listbox(master, yscrollcommand=scrollbar.set)
for i in range(1000):
listbox.insert(tk.END, str(i))
listbox.pack(side=tk.LEFT, fill=tk.BOTH)
scrollbar.config(command=listbox.yview)
tk.mainloop()
Essayez de cliquer-glisser le curseur: il ne fonctionne pas. Si vous cliquez et faites glisser ci-dessous le curseur, alors cela fonctionne. Il semble que le curseur de souris-réactif ne correspond pas au curseur visuel. En outre, la vitesse à laquelle le curseur se déplace lors du glissement ne correspond pas à la vitesse de la souris ...
Cela ne se produit que sur Mac en utilisant ActiveTcl 8.5.18 (la version recommandée sur mac pour Python> = 2.7.10 y compris Python 3). Tout fonctionne correctement avec le python 2.7.5 osx-native et Tcl 8.5.9 osx-native (os x 10.9.5).
Le problème est absent sur Linux avec python 3.4.3 et Tcl 8.6.1, pas sûr sur windows.
Quelqu'un connaîtrait-il une solution de contournement? L'utilisation de la version à thème de la barre de défilement ne résout pas le problème.
Comment vous utilisez tkinter avec Active ** Tcl **? J'ai ActiveTcl et ActivePython installé sur ma boîte OSX et votre code fonctionne bien pour moi. –
@BrianOakley: je ne sais pas ce que tu veux dire. J'ai fondamentalement installé ActiveTcl et python 2.7.10 et 3 de python.org, comme décrit [là] (https://www.python.org/download/mac/tcltk). Je n'ai pas d'autre installation de Tcl/Tk que celle de "osx-native" (8.5.9) et ActiveTcl's (8.5.18), donc je suppose que quand j'utilise tkinter avec python 3 et qu'il me dit que le numéro de version est 8.5. 18 il doit être ActiveTcl's ... Bon à savoir tout fonctionne avec ActivePython bien! Je me demande ce qui crée le problème alors! –