Tkinter多Entry组件同步输入异常问题求助
解决Tkinter Entry组件输入内容同步的问题
你遇到的问题根源是所有Entry控件错误使用了text参数——Tkinter的Entry组件并没有text这个配置选项,当你传入text="test"时,会导致所有输入框意外共享同一个文本引用,进而出现输入内容同步的异常。
修复方案1:直接移除无效的text参数
这是最直接的修复方式,删除每个Entry的text="test"参数后,每个输入框会独立维护自身内容:
import tkinter as tk window = tk.Tk() window.title('Mortgage Calculator') # How much is the property? property_price = tk.Label( window, text="How much is the property? ", font=("Arial", 11)) property_price.pack(pady=10) property_price_entry = tk.Entry(window, font=("Arial", 11)) property_price_entry.pack(pady=10) # How much do you want to pay as a downpayment? property_deposit = tk.Label( window, text="How much do you want to pay as a downpayment? ", font=("Arial", 11)) property_deposit.pack(pady=10) property_deposit_entry = tk.Entry(window, font=("Arial", 11)) property_deposit_entry.pack(pady=10) # How many years are you paying off your mortgage? years_of_mortgage = tk.Label( window, text="How many years are you paying off your mortgage? ", font=("Arial", 11)) years_of_mortgage.pack(pady=10) years_of_mortgage_entry = tk.Entry(window, font=("Arial", 11)) years_of_mortgage_entry.pack(pady=10) # How much in interest are you paying? interest = tk.Label( window, text="How much in interest are you paying? ", font=("Arial", 11)) interest.pack(pady=10) interest_entry = tk.Entry(window, font=("Arial", 11)) interest_entry.pack(pady=10) # Mortgage calculator button monthly_mortgage_payment = tk.Label( window, text="Calculate monthly mortgage payments ", font=("Arial", 11)) monthly_mortgage_payment.pack(pady=10) monthly_mortgage_payment_button = tk.Button( window, text="Calculate monthly mortgage payments ", font=("Arial", 11)) monthly_mortgage_payment_button.pack(pady=10) window.mainloop()
修复方案2:使用textvariable绑定独立变量(如需默认文本)
如果需要给输入框设置默认内容,可以为每个Entry绑定独立的StringVar对象,实现更灵活的文本控制:
import tkinter as tk window = tk.Tk() window.title('Mortgage Calculator') # 为每个Entry创建独立的StringVar price_var = tk.StringVar(value="") deposit_var = tk.StringVar(value="") years_var = tk.StringVar(value="") interest_var = tk.StringVar(value="") # How much is the property? property_price = tk.Label( window, text="How much is the property? ", font=("Arial", 11)) property_price.pack(pady=10) property_price_entry = tk.Entry(window, textvariable=price_var, font=("Arial", 11)) property_price_entry.pack(pady=10) # How much do you want to pay as a downpayment? property_deposit = tk.Label( window, text="How much do you want to pay as a downpayment? ", font=("Arial", 11)) property_deposit.pack(pady=10) property_deposit_entry = tk.Entry(window, textvariable=deposit_var, font=("Arial", 11)) property_deposit_entry.pack(pady=10) # How many years are you paying off your mortgage? years_of_mortgage = tk.Label( window, text="How many years are you paying off your mortgage? ", font=("Arial", 11)) years_of_mortgage.pack(pady=10) years_of_mortgage_entry = tk.Entry(window, textvariable=years_var, font=("Arial", 11)) years_of_mortgage_entry.pack(pady=10) # How much in interest are you paying? interest = tk.Label( window, text="How much in interest are you paying? ", font=("Arial", 11)) interest.pack(pady=10) interest_entry = tk.Entry(window, textvariable=interest_var, font=("Arial", 11)) interest_entry.pack(pady=10) # Mortgage calculator button monthly_mortgage_payment = tk.Label( window, text="Calculate monthly mortgage payments ", font=("Arial", 11)) monthly_mortgage_payment.pack(pady=10) monthly_mortgage_payment_button = tk.Button( window, text="Calculate monthly mortgage payments ", font=("Arial", 11)) monthly_mortgage_payment_button.pack(pady=10) window.mainloop()
内容的提问来源于stack exchange,提问作者Gabriella Dines
相关产品推荐
相关产品推荐

