我有一個刻度和一個輸入欄位,它們都控制同一個變數,讓用戶選擇他們想要使用的變數。我編碼它有點像這樣:
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()再次呼叫,它不會不要陷入無限回圈,但每次都會至少執行兩次,這會影響性能。任何線索我將如何解決這個問題?謝謝
uj5u.com熱心網友回復:
如果您對兩個小部件使用相同的變數,它們將自動保持同步。你根本不需要你的兩個功能。以下代碼說明了該技術。
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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452601.html
