首页 > 解决方案 > 每次在 Tkinter 中按下按钮时如何添加组合框?

问题描述

我想构建 GUI,每次按下按钮时 Combobox 都会添加一个按钮。但我不知道如何计算或编码这个概念

而且,还有其他小部件吗?还是有其他方法来建立我的概念?请有人帮我..

不使用 tkinter 的主要概念如下所示。我希望在 Tkinter 中制作这个概念。

[这是我尝试过的,但是当我按下按钮时,所有添加的组合框都可以一起工作(这意味着当我更改列表名称时,所有组合框也会更改..)]

def Plus_EXT():
    button_plus = Button(window3,justify = CENTER,command = Add_EXT, text= "+")
    button_plus.grid(row=0,column=0)

def Add_EXT():
    global Num
    window3.update()
    Num += 1
    CEList1 = [x for x in os.listdir(cur_dir) if ('CE' in x.upper()) and ('.rpt' in x)]
    RPT_EXT_file=ttk.Combobox(window3, values=CEList1,textvariable= EXT_String)
    RPT_EXT_file.grid(row=8+Num,column=1)
    RPT_EXT_file.set("FILE")

[不使用 TKINTER 的主要概念]

CE_Num= int(input("How Many EXTRA Chordae?: "))

User_File = input("Type the New File Name: ")

for Num_Of_EXT in range(CE_Num):
    RPT_EXT_file = input("Type the RPT of EXTRA CHORDAE: ") + ".rpt"
    EXTRA(User_File,RPT_EXT_file,Num_Of_EXT)
    EXTRA_PLT(User_File,Num_Of_EXT)

我想要的输出是{每次我按下按钮时都会在框架中添加一个新的组合框,其中的列表单独工作。}

标签: pythontkinter

解决方案


问题是您的所有 Combobox 小部件都与名为 . 的相同文本变量链接。因此EXT_String,当您更改一个 Combobox 小部件的值时,它会更新所有这些小部件中的相同值。

我建议保留这些变量的列表,并NUM在循环中使用该列表来分配文本变量。

更新:

只是一个基于Add_EXT方法中共享的有限代码的示例:

global var_list
var_list.append(IntVar()) #Or StringVar(), whatever you are using
RPT_EXT_file=ttk.Combobox(window3, values=CEList1,textvariable=var_list[-1])

推荐阅读