Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 26, 2014 17:24:46

kotec
От: Москва
Зарегистрирован: 2014-04-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по tkinter

Здравствуйте!
Есть виджет OptionMenu. Когда пользователь выбирает какое-то значение из раскрывающегося списка, то некоторым образом меняется другой виджет.
Вот как называется событие “что-то выбрано в OptionMenu”?
С другими событиями всё работает, всё налажено, нужно только знать название этого события в tkinter.
Заранее спасибо за ответ.

Офлайн

#2 Апрель 26, 2014 18:03:17

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

Вопросы по tkinter

Помогу без вопросов.
Хотя я же Вам написал ответ. Напишите, подробнее, что Вы хотите получить.
Например. Я выбираю в OptionMenu цвет, а рядом меняется цвет кнопки или что-то в этом роде.

Офлайн

#3 Апрель 27, 2014 03:41:52

kotec
От: Москва
Зарегистрирован: 2014-04-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по tkinter

Есть виджеты:
OptionMenu c выбором числа

opm2=OptionMenu(root, vr3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,\
		14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
и метка
lb5=Label(root, fg="#c8d3dc", text=".. - .. - ...", bg="#fad9be")
далее
opm2.bind('<событие>', func3)
func3 получает значение var3 и в соответствии с этим значением меняет виджет lb5, вставляя выбранное число вместо первых двух точек.
У меня всё получилось. Например, если вместо слова “событие” в коде поставить “Leave” или “ButtonPress”, то всё работает, виджет lb5 меняется, но, естественно, не в момент выбора пользователем значения в списке.
Вот я хочу спросить - как называется событие “выбрать что-то в OptionMenu” в tkinter?

Офлайн

#4 Апрель 27, 2014 11:50:10

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

Вопросы по tkinter



Смотрим на код…

import Tkinter
#
def call(position):
    label["text"] = "%s/../.." % (position)
#
root = Tkinter.Tk()
var = Tkinter.StringVar()
opt = Tkinter.OptionMenu(root, var, *[12, 11, 10], command=call)
opt.pack()
#
label = Tkinter.Label(root, text="../../..")
label.pack()
#
root.mainloop()

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

Офлайн

#5 Апрель 27, 2014 13:09:21

kotec
От: Москва
Зарегистрирован: 2014-04-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по tkinter

Спасибо, 4kpt_II
Добавил в виджет command=func3 и всё работает.
Спасибо Вам, буду знать!
Отдельное спасибо за строку label = “%s/../..” % (position)
Мой вариант более громоздкий.

Офлайн

#6 Апрель 27, 2014 13:11:08

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

Вопросы по tkinter

Не за что
Можно еще использовать метод строки - .format().

P.S. Вы еще просили книги. Если они нужны, то пишите в личку скайп и я могу переслать.

Отредактировано 4kpt_II (Апрель 27, 2014 13:13:51)

Офлайн

#7 Апрель 27, 2014 13:24:34

kotec
От: Москва
Зарегистрирован: 2014-04-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по tkinter

Книги очень нужны. Кое-что в сети нашёл, конечно.
Но, как не стыдно признать, не могу найти как тут в личку писать.
На е-мэйл написал.

Отредактировано kotec (Апрель 27, 2014 13:31:20)

Офлайн

#8 Апрель 29, 2014 17:43:40

kotec
От: Москва
Зарегистрирован: 2014-04-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по tkinter

Всем привет!
Вот ещё вопрос. Как в tkinter получать свойства виджетов?
Например, есть виджет Label, у него в процессе исполнения программы меняются какие-то свойства, например, bg, text и т.д.
Как получитьь эти свойства?
У меня получилось, если для задания свойств использовать специальные классы, например, StringVar, но есть же, наверное, прямой способ.
Заранее спасибо.

Офлайн

#9 Апрель 29, 2014 23:57:39

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

Вопросы по tkinter

Есть два варианта.

Формально, множество свойств виджета собраны как словарь, поэтому

print but["bg"]

Кроме того, есть метод, который тоже позволяет получить значение свойства

print but.cget("bg")

Используйте тот вариант, который больше по-душе.

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

Офлайн

#10 Апрель 30, 2014 01:19:50

kotec
От: Москва
Зарегистрирован: 2014-04-15
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по tkinter

Спасибо, 4kpt_II!
Всё сработало. Очень ценная информация.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version