从Tkinter中的列表框激活输入框

2024-09-28 03:12:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个GUI来收集用户的三个输入,其中第一个输入有两个选项(基于列表框),如下图所示(选择了选项“NACA”):

enter image description here

问题在于列表框。我想这两个选项是相互重叠的。例如,如果我选择NACA选项(上图),然后选择.txt选项,NACA标签的某些部分将保留:

enter image description here

当然,只是出现了标签,而不是要在里面键入的输入框(如果我删除列表框的一部分,最后两个输入框的输入框,那么我真的认为问题出在列表框上)


import tkinter as tk


root = tk.Tk()
root.geometry('400x300') 
root.resizable(0, 0)



menu_inicial = tk.Canvas(root, width = 400, height = 300)
menu_inicial.pack()


def naca_box():
    naca_entry_box = tk.Entry(menu_inicial)
    menu_inicial.create_window(200, 30, window=naca_entry_box)
    naca_label = tk.Label(root, text="Enter NACA:")
    naca_label.pack()
    naca_label.place(x=50, y = 50)
    
def txt_box():
    txt_entry_box = tk.Entry(menu_inicial)
    menu_inicial.create_window(200, 30, window=txt_entry_box)
    txt_label = tk.Label(root, text="Enter .txt:")
    txt_label.pack()
    txt_label.place(x=50, y = 50)
    
    
def aoa_box():
    aoa_entry_box = tk.Entry(root)
    menu_inicial.create_window(200, 60, window=aoa_entry_box)
    aoa_label = tk.Label(root, text="Enter AoA (º):")
    aoa_label.pack()
    aoa_label.place(x=50, y = 80)
    
    
def panel_box():
    panel_entry_box = tk.Entry(root)
    menu_inicial.create_window(200, 90, window=panel_entry_box)
    panel_label = tk.Label(root, text="Enter Nº Panels:")
    panel_label.pack()
    panel_label.place(x=40, y = 110)


def update_box(*args):
    selection = box_list.curselection() 
    lb_value.set(options[selection[0]] ) 
    
    if selection[0] == 0:
        naca_box()
    else:
        txt_box()

options = ['NACA', '.txt']

listCon = tk.StringVar(value=options)
box_list = tk.Listbox(menu_inicial, listvariable=listCon, width=10, height=2, selectmode=tk.SINGLE)
box_list.grid(row=0, column=0)
box_list.bind('<<ListboxSelect>>', update_box)

lb_value=tk.StringVar()

aoa_box()
panel_box()


root.mainloop()



我怎样才能继续呢?选择选项的“IF”语句有问题吗?(我不知道这是不是最好的办法……)


Tags: txtbox选项rootwindowlabelpacktk
1条回答
网友
1楼 · 发布于 2024-09-28 03:12:15

问题是每次单击按钮时, 您每次都在创建标签, 如果要更改所创建标签中的文本,请使用“config()

像这样更改代码

sample_label=tk.Label(root)
sample_label.place(x=50, y = 50)

def naca_box():
    naca_entry_box = tk.Entry(menu_inicial)
    menu_inicial.create_window(200, 30, window=naca_entry_box)
    sample_label.config(text="Enter NACA:")

    
def txt_box():
    txt_entry_box = tk.Entry(menu_inicial)
    menu_inicial.create_window(200, 30, window=txt_entry_box)
    sample_label.config(text="Enter .txt:")

相关问题 更多 >

    热门问题