Tkinter控制尺度和输入域相互配合

Tkinter control scale and entry field with each other

我有一个比例尺和一个输入字段,它们都控制同一个变量,让用户可以选择他们想要使用的变量。我把它编码成这样:

def scale_has_moved(value):
    entry_field.delete(0, END)
    entry_field.insert(0, str(float(value)))

    # Other functions I want the code to do

def entry_field_has_been_written(*args):
    value = float( entry_field.get() )
    scale.set(value)

这有效,当我移动 scale 时,entry_field 被写入,反之亦然,我希望代码完成的其他功能都发生了。明显的问题是函数在循环中相互调用,因此移动比例调用 scale_has_moved() 调用内部的附加函数并写入输入字段,然后因为输入字段已写入 entry_field_has_been_written()被调用,然后再次调用 scale_has_moved(),它不会进入无限循环,但它每次至少执行两次影响性能的所有操作。 任何线索我将如何解决这个问题?谢谢

如果您对两个小部件使用相同的变量,它们将自动保持同步。你根本不需要你的两个功能。以下代码说明了该技术。

import tkinter as tk

root = tk.Tk()

var = tk.IntVar(value=0)
scale = tk.Scale(root, variable=var, orient="horizontal")
entry = tk.Entry(root, textvariable=var)

scale.pack(side="top", fill="x")
entry.pack(side="top", fill="x")

root.mainloop()