为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着一只汪 2022-01-18 17:18:29
我正在做一个小项目,在检索组合框中存储的值时遇到问题。该程序有一个“加号”按钮,可在现有框下方创建其他框。它们是通过调用“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 valuedef create():    global entry_counter    name = "loop"+str(entry_counter-1)    name = ComboBox(window, entry_counter, fields)    values.append(name.get_value())    entry_counter += 1def submit():    for i in range(1, entry_counter):        name = "loop" + str(entry_counter-1)        values.append(name.get_value())例如,如果我创建了 2 个框并选择了选项“test1”和“test2”,我希望我的值列表包含 ["test1, "test2"]
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

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


comboboxes = []

def create():

    ...

    comboboxes.append(new_instance)


def submit():

    for combobox in comboboxes:

        ...


查看完整回答
反对 回复 2022-01-18
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

你在正确的轨道上.get()。我相信您的解决方案是您的get_value函数还需要一个event参数:


def get_value(self, event):

    value = self.field_box.get()

    return value


查看完整回答
反对 回复 2022-01-18
  • 2 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信