Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Как заполнить значениями Combobox? [RSS Feed]

#1 Май 19, 2014 13:38:33

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Как заполнить значениями Combobox?

Здравствуйте. Я хочу указывать дату с помощью 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)
Ожидание:

-
Реальность:

-
ШЯДНТ?



python3 openSUSE-43Leap

Офлайн

#2 Май 19, 2014 16:30:30

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Как заполнить значениями Combobox?

Надо же numb.values изменять в цикле, а не делать insert.



Офлайн

#3 Май 19, 2014 17:00:49

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Как заполнить значениями Combobox?

 AttributeError: 'Combobox' object has no attribute 'values' 



python3 openSUSE-43Leap

Офлайн

#4 Май 19, 2014 21:04:41

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как заполнить значениями Combobox?

Так не атрибут же. Вам правильно написали. Все реализовано в виде объекта, который напоминает словарь. Смотрим на код внимательно.

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)

P.S. Я использовал менеджер геометрии .place() для вставки на свой готовый объект.

P.S.S. Будут вопросы - пишите…

Отредактировано 4kpt_II (Май 19, 2014 21:20:36)

Офлайн

#5 Май 20, 2014 06:56:15

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Как заполнить значениями Combobox?

Благодарю.
Ну то есть:

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



python3 openSUSE-43Leap

Отредактировано Voroshek (Май 20, 2014 06:56:45)

Офлайн

#6 Май 20, 2014 09:42:04

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как заполнить значениями Combobox?

Voroshek
При всем уважении. У меня этого нет…
Но я пользуюсь 2.7, поэтому могут быть отклонения.

Офлайн

#7 Май 20, 2014 10:24:13

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как заполнить значениями Combobox?

Voroshek
Ну то есть:

Можно короче

numb["value"] = [i for i in range(tr[mont.get()])]

Если бы работали в 2.7, то можно было бы еще короче:

numb["value"] = range(tr[mont.get()])

P.S. Будут вопросы - пишите…

Офлайн

  • Начало
  • » GUI
  • » Как заполнить значениями Combobox?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version