tkinter组合框选择Yes时动态显示文本输入框的实现问题
问题原因
- 你当前的代码仅在程序初始化阶段执行一次下拉框值的判断,此时用户尚未完成选择操作,条件判断永远无法匹配到
Yes选项,因此不会生成对应组件。 - 直接在判断逻辑内新建组件的写法会导致每次选择
Yes都重复生成新组件,产生组件堆叠问题。
修复方案
你需要给Combobox绑定选择事件回调,预先创建好标签和输入框组件默认隐藏,用户选择后实时判断选中值,控制组件的显隐即可。
可运行参考代码
import tkinter as tk from tkinter import ttk window = tk.Tk() window.geometry("700x500") vlist = ["Yes", "No"] # 预先创建目标组件,初始状态隐藏 worker_label = tk.Label(window, text="Number of Workers", bg="white", fg="black", font=("Times",13,"bold")) inputtxt3 = tk.Text(window, height=1, width=25, bg="light yellow") # 定义下拉框选择触发的回调函数 def on_combo_select(event): selected_val = Combo.get() if selected_val == "Yes": # 选中Yes时显示组件 worker_label.place(x=155,y=240) inputtxt3.place(x=325, y=238) else: # 选中其他选项时隐藏组件 worker_label.place_forget() inputtxt3.place_forget() # 创建下拉框,绑定选择事件 Combo = ttk.Combobox(window, values = vlist, state="readonly") Combo.set("Pick an Option") Combo.pack() Combo.bind("<<ComboboxSelected>>", on_combo_select) window.mainloop()
内容的提问来源于stack exchange,提问作者Rawan Ghanem
相关产品推荐
相关产品推荐

