Форум сайта python.su
Здравствуйте. Я хочу указывать дату с помощью Combobox.
Код
mont = ttk.Combobox(wnd, values=[ "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь" ], width=8) mont.grid(row=3, column=2) mont.set("январь") numb = ttk.Combobox(wnd, width=20) numb.grid(row=3, column=1) def calc(event): tr = { "январь":31, "февраль":28, "март":31, "апрель":30, "май":31, "июнь":30, "июль":31, "август":31, "сентябрь":30, "октябрь":31, "ноябрь":30, "декабрь":31 } for i in range(tr[mont.get()]): numb.insert(i, str(i)) numb.bind("<Button-1>", calc)
Офлайн
Надо же numb.values изменять в цикле, а не делать insert.
Офлайн
AttributeError: 'Combobox' object has no attribute 'values'
Офлайн
Так не атрибут же. Вам правильно написали. Все реализовано в виде объекта, который напоминает словарь. Смотрим на код внимательно.
mont = ttk.Combobox(root, values=[u"январь", u"февраль", u"март", u"апрель", u"май", u"июнь", u"июль", u"август", u"сентябрь", u"октябрь", u"ноябрь", u"декабрь"], width=8) mont.place(relx=0.5, rely=0.3, anchor="center") mont.set("январь") numb = ttk.Combobox(root, width=20) numb.place(relx=0.5, rely=0.5, anchor="center") # def calc(event): tr = {u"январь": 31, u"февраль": 28, u"март": 31, u"апрель": 30, u"май": 31, u"июнь": 30, u"июль": 31, u"август": 31, u"сентябрь":30, u"октябрь": 31, u"ноябрь": 30, u"декабрь": 31} numb["value"] = tr.values() # numb.bind("<Button-1>", calc)
Отредактировано 4kpt_II (Май 19, 2014 21:20:36)
Офлайн
Благодарю.
Ну то есть:
x = [] y = 1 while y<=tr[mont.get()]: x.append(y) y += 1 numb["value"] = x
python3 >> import tkinter >> help("tkinter.ttk.Combobox") | | insert(self, index, string) | Insert STRING at INDEX
Отредактировано Voroshek (Май 20, 2014 06:56:45)
Офлайн
Voroshek
При всем уважении. У меня этого нет…
Но я пользуюсь 2.7, поэтому могут быть отклонения.
Офлайн
Voroshek
Ну то есть:
numb["value"] = [i for i in range(tr[mont.get()])]
numb["value"] = range(tr[mont.get()])
Офлайн