我无法将鼠标的位置传递给在 Tkinter 中创建的进度条小部件滑块。我有代码,用户可以通过它来操纵进度条,但是通过使用下面放置的另一个小部件。我想消除第二个小部件。我无法将鼠标的位置传递给 ttk.Progressbar。
当前滑块:
问题是摆脱下面的小部件并能够仅通过鼠标操作绿色条。
当前代码:
from tkinter import *
from tkinter import ttk
root = Tk()
label = Label(root, text ='Progress Bar', font = "50")
label.pack(pady=5)
#mouse position
def motion(event):
x, y = event.x, event.y
print('{}, {}'.format(x, y))
#Progress Bar
progbar = ttk.Progressbar(root, orient=HORIZONTAL, length=220, mode="determinate", max=50.0)
progbar.pack(pady=20)
progbar.start()
progbar.stop()
progbar.bind('<B1-Motion>', motion)
var = IntVar()
progbar.config(variable=var)
#Scale
scale = ttk.Scale(root, orient=HORIZONTAL, length=220, variable=var, from_ = 0.0, to= 50.0)
scale.pack()
root.geometry("300x150")
root.mainloop()
您可以获取传递给函数的x
属性并将其除以进度条宽度以获取鼠标相对于进度条的位置。然后,您可以使用该值将进度条更新为该比例。为了使计算更容易,我将进度条的属性更改为 1。event
motion
max
from tkinter import *
from tkinter import ttk
root = Tk()
label = Label(root, text ='Progress Bar', font="50")
label.pack(pady=5)
var = IntVar()
def motion(event):
proportion = event.x / event.widget.winfo_width()
var.set(proportion)
#Progress Bar
progbar = ttk.Progressbar(root, orient=HORIZONTAL, length=220, mode="determinate", max=1)
progbar.pack(pady=20)
progbar.start()
progbar.stop()
progbar.bind('<B1-Motion>', motion)
progbar.config(variable=var)
root.geometry("300x100")
root.mainloop()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句