Итак, у меня есть программа, которую я создаю для планшета, которая содержит текстовые виджеты. Я хотел иметь возможность прокручивать текстовые виджеты, просто щелкая и перетаскивая их (поскольку полосы прокрутки трудно использовать на сенсорном экране).
Проблема возникает, хотя всякий раз, когда вы покидаете текстовый виджет во время прокрутки, вы увидите функцию, с которой я столкнулся, с тем, как обычно реагирует Tkinter.
Обычно, если вы перетаскиваете текстовый виджет, он будет прокручиваться в этом направлении, но это противоречит моей функции.
Извините, поскольку я знаю, что это было написано плохо, но если вы попробуете код и просто перетащите его для прокрутки, вы увидите мою проблему.
import Tkinter as Tk
last_y= None
root = Tk.Tk()
Text_widget= Tk.Text(root, height=20, width=30)
Text_widget.pack()
Text_widget.insert(Tk.END, "t\nh\ni\ns\n \na\n \nt\ne\ns\nt\n \nt\no\n \nf\ni\ng\nu\nr\ne\n \nt\nh\ni\ns\n \no\nu\nt\n\
t\nh\ni\ns\n \na\n \nt\ne\ns\nt\n \nt\no\n \nf\ni\ng\nu\nr\ne\n \nt\nh\ni\ns\n \no\nu\nt\n\
t\nh\ni\ns\n \na\n \nt\ne\ns\nt\n \nt\no\n \nf\ni\ng\nu\nr\ne\n \nt\nh\ni\ns\n \no\nu\nt\n\
t\nh\ni\ns\n \na\n \nt\ne\ns\nt\n \nt\no\n \nf\ni\ng\nu\nr\ne\n \nt\nh\ni\ns\n \no\nu\nt\n\
t\nh\ni\ns\n \na\n \nt\ne\ns\nt\n \nt\no\n \nf\ni\ng\nu\nr\ne\n \nt\nh\ni\ns\n \no\nu\nt\n")
Text_widget.config(state='disabled')
def tablet_drag_y(event):
global last_y
print 5
if last_y==None:
last_y=event.y_root
event.widget.tag_remove(Tk.SEL, "1.0", Tk.END)
return "break"
movement= (event.y_root-last_y)
event.widget.yview(Tk.SCROLL,-1*(movement), "pixels")
last_y=event.y_root
event.widget.tag_remove(Tk.SEL, "1.0", Tk.END)
return "break"
Text_widget.bind("<B1-Motion>", tablet_drag_y)
Tk.mainloop()