|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我用tkinter写了一个文本编辑器,用text控件做了一个显示行数的侧边栏
为了把 侧边栏, 显示文本的text控件, 滚动条 三者的滚动绑定在一起,我写了三个函数分别绑定这三个控件的滚动事件:
def all_yview(*args): # y_bar 的滚动回调函数,同时设置text 和text0的位置
self.text.yview(*args)
self.text0.yview(*args)
def all_set0(*args): # text0 的纵向滚动回调函数,同时设置text 和 y_bar的位置
self.y_bar.set(*args)
self.text.yview_moveto(args[0])
def all_set(*args): # text 的纵向滚动回调函数,同时设置text0 和 y_bar的位置
self.y_bar.set(*args)
self.text0.yview_moveto(args[0])
self.text0.config(yscrollcommand=all_set0)
self.text.config(yscrollcommand=all_set)
self.y_bar.config(command=all_yview)
图片如下:
但是实际滚动时,text0和text的滚动总是会逐渐出现差距
(ps:)我觉得这可能是tkinter自己的问题,光写python没法解决,但出于强迫症,我还是把他提问到论坛了,希望有遇到一样情况的老哥前来讨论
- from tkinter import *
- root = Tk()
- root.geometry("750x430")
- root.title("PyText")
- def mw(event):
- label.yview_scroll(int(-1*(event.delta/120)), "units")
- text.yview_scroll(int(-1*(event.delta/120)), "units")
- return "break"
- def sc(*arg):
- label.yview(*arg)
- text.yview(*arg)
- sb = Scrollbar(root, command=sc)
- sb.place(x=730, y=5, width=15, height=420)
- sb.bind("<MouseWheel>", mw)
- label = Text(root, font=("宋体", 12), bg="#F3F3F3", yscrollcommand=sb.set)
- label.place(x=5, y=5, width=25, height=420)
- label.bind("<MouseWheel>", mw)
- text = Text(root, font=("宋体", 12), yscrollcommand=sb.set)
- text.place(x=30, y=5, width=695, height=420)
- text.bind("<MouseWheel>", mw)
- for i in range(1, 100):
- label.insert(INSERT, str(i) + "\n")
- text.insert(INSERT, str(i) + "\n")
-
- root.mainloop()
复制代码
|
|