有一个OptionMenu,即使在使用 get()之后,我的选项也没有进行diplaying 我将所有值附加到列表中,因为我希望它稍后在我的GUI中再次加载它 这是我的代码
self.make_a_list=[]
self.number_row=1
def function_1(self):
self.var=StringVar()
options=["one","two","three","four"]
menu1=OptionMenu(self,self.var,*options)
menu1.config(width=10)
menu1.grid(column=5,row=int(self.number_row))
self.make_a_list.append(self.var)
self.var.set("one")
self.number_row=self.number_row+1
def function_2(self):
for i in range(self.number_row):
print(self.make_a_list[i].get())
我知道我做错了但却找不到
答案 0 :(得分:0)
我在您的代码中看到的唯一问题是您从self.make_a_list
设置为1(一)而不是0(零)开始。第一次创建变量时,将其附加到). Then, you increment
,使其为零项(即:self.make_a_list [0] function_2
self.number_row`使其成为2.
range(self.number_row)
对range(2)
进行循环。如果你只有一个选项菜单,这将循环def function_2(self):
for item in self.make_a_list:
print(item.get())
,意味着0和1.由于列表只有一个项目,你第二次通过循环时会得到一个索引超出范围错误。
在python中,你不需要按索引遍历列表。而不是使用索引,简单地逐个元素遍历列表元素。如果您养成了以这种方式使用列表的习惯,那么您将永远不会遇到这种类型的逐个错误。
var autocomp = jQuery.noConflict();
autocomp(document).ready(function() {
var aTags = ["ask<####>1","always<####>2", "all<####>3", "alright<####>4", "one<####>5", "foo<####>6", "blackberry<####>7", "tweet<####>8","force<####>9", "westerners<####>10", "sport<####>11"];
/****
var newATags = [{label: "ask", value: "1"}, {label: "always", value: "2"}, {label: "all", value: "3"},
{label: "alright", value: "4"}, {label: "one", value: "5"}, {label: "foo", value: "6"},
{label: "blackberry", value: "7"}, {label: "tweet", value: "8"}, {label: "force", value: "9"},
{label: "westerners", value: "10"}, {label: "sport", value: "11"}];
**/
newATags = aTags.map(function(currentValue, index, array) {
var retVal = {};
retVal.label = currentValue.substr(0, currentValue.indexOf('<'));
retVal.value = currentValue.substr(currentValue.indexOf('>') + 1);
return retVal;
});
autocomp('#category').autocomplete({
source: newATags,
select: function(e, ui) {
var tmp = ui.item.label;
ui.item.label = ui.item.value;
ui.item.value = tmp;
autocomp('#results').text(ui.item.label);
},
open: function (e, ui) {
var acData = autocomp(this).data('ui-autocomplete');
acData.menu.element.find('li').each(function () {
var me = autocomp(this);
var keywords = acData.term.split(' ').join('|');
me.html(me.text().replace(new RegExp("(" + keywords + ")", "gi"), '<b>$1</b>'));
});
}
});
});