从按钮功能创建的对象中检索值的问题

我正在做一个小项目,在检索组合框中存储的值时遇到问题。该程序有一个“加号”按钮,可在现有框下方创建其他框。它们是通过调用“create”函数创建的,该函数创建 ComboBox 类的新实例,在该实例中创建框并将其放到屏幕上。然后应该有一个单独的“提交”函数循环并检索所有框值并将它们存储在列表中。我的主要缺陷是我在变量名中使用了数据,但我不知道在这种情况下如何做到这一点。有没有人有替代解决方案?


(这里显示了一些屏幕外变量作为参数,但绝对不是问题的根源)


class ComboBox:

    def __init__(self, master, counter, fields):

        self.master = master

        self.counter = counter

        self.fields = fields


        self.field_box = ttk.Combobox(width=20)

        self.field_box["values"] = fields

        self.field_box.grid(row=counter + 1, column=0, pady=5)


    def get_value(self):

        value = self.field_box.get()

        return value

def create():

    global entry_counter

    name = "loop"+str(entry_counter-1)

    name = ComboBox(window, entry_counter, fields)

    values.append(name.get_value())

    entry_counter += 1



def submit():

    for i in range(1, entry_counter):

        name = "loop" + str(entry_counter-1)

        values.append(name.get_value())

例如,如果我创建了 2 个框并选择了选项“test1”和“test2”,我希望我的值列表包含 ["test1, "test2"]


守着一只汪
浏览 136回答 2
2回答

www说

不确定我是否正确理解了这个问题,但我猜你是在问如何循环抛出 ComboBox 的所有实例。您可以只创建一个全局数组,在create()方法中将新实例附加到其中:comboboxes = []def create():    ...    comboboxes.append(new_instance)def submit():    for combobox in comboboxes:        ...

一只萌萌小番薯

你在正确的轨道上.get()。我相信您的解决方案是您的get_value函数还需要一个event参数:def get_value(self, event):    value = self.field_box.get()    return value
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python