我正在做一个小项目,在检索组合框中存储的值时遇到问题。该程序有一个“加号”按钮,可在现有框下方创建其他框。它们是通过调用“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:
...
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
你在正确的轨道上.get()。我相信您的解决方案是您的get_value函数还需要一个event参数:
def get_value(self, event):
value = self.field_box.get()
return value
添加回答
举报
0/150
提交
取消