Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 31, 2017 19:19:12

InFocus
Зарегистрирован: 2017-01-31
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

Здравствуйте, прошу о помощи.

Создал программу paint на питоне, работает все как надо, но я бы хотел добавить другие эффекты кисти. Создал отдельный toplevel после открытия вкладки tools, туда добавил пару кнопок.
Не могу понять почему widget ругается из-за того что я заменяю его на другой при нажатии заданой кнопки …
P.S пробовал заменять стандартный - все работает.
Вот кусок кода откуда все работает..
Спасибо

Прикреплённый файлы:
attachment forum.jpg (161,4 KБ)

Офлайн

#2 Янв. 31, 2017 19:24:16

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

Если Вы генерируете событие и передаете в обработчик event, то при генерации события “нажатие кнопки” в качестве event.widget передается кнопка. Так вот Вы для этой кнопки пытаетесь вызвать метод create_oval, которого там нет и в помине

Офлайн

#3 Янв. 31, 2017 19:27:52

InFocus
Зарегистрирован: 2017-01-31
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

4kpt_IV
Если Вы генерируете событие и передаете в обработчик event, то при генерации события “нажатие кнопки” в качестве event.widget передается кнопка. Так вот Вы для этой кнопки пытаетесь вызвать метод create_oval, которого там нет и в помине

Каким способом можно устранить эту проблему?
Код который работает же тоже передает в обработчик event, а рисует даже при запуске и без каких либо ошибок.

Так же пробовал обращаться к canvas от которого он работает, но там уже совсем другая ошибка.

Отредактировано InFocus (Янв. 31, 2017 19:31:51)

Офлайн

#4 Янв. 31, 2017 19:32:00

InFocus
Зарегистрирован: 2017-01-31
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

InFocus

Прикреплённый файлы:
attachment Screen Shot 2017-01-31 at 19.29.16.png (29,7 KБ)

Офлайн

#5 Янв. 31, 2017 19:44:53

InFocus
Зарегистрирован: 2017-01-31
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

4kpt_IV
Если Вы генерируете событие и передаете в обработчик event, то при генерации события “нажатие кнопки” в качестве event.widget передается кнопка. Так вот Вы для этой кнопки пытаетесь вызвать метод create_oval, которого там нет и в помине


Вот и код на котором ошибка…

Прикреплённый файлы:
attachment forum.py (2,0 KБ)

Офлайн

#6 Янв. 31, 2017 19:57:32

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

Попробую пояснить попроще.

В этой строке в качестве виджета в евент передается что?

 drawing_area.bind("<Motion>", motion)

Правильно. drawing_area.

А в этой что?

 but1.bind("<Button-1>",oval)

Правильно. but1.

В первом обработчике события вы у drawing_area вызываете метод create_polygon
Во втором пытаетесь этот метод вызвать у but1. У кнопки такого метода нет! Или передайте в обработчик button (oval) drawing_area на которой планируете рисовать или укажите ее глобально. Вы и так этих глобалов уже натыкали…

Отредактировано 4kpt_IV (Янв. 31, 2017 19:58:10)

Офлайн

#7 Янв. 31, 2017 20:20:11

InFocus
Зарегистрирован: 2017-01-31
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

4kpt_IV
работчике события вы у drawing_area вызыва

Что-то я сломался…
Перечитываю текст, вроде делаю так как надо, но все равно не вникаю.
Не работает(

Отредактировано InFocus (Янв. 31, 2017 20:38:21)

Офлайн

#8 Янв. 31, 2017 20:43:21

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

Еще проще.
Что должно происходить при нажатии на разные кнопки?

Офлайн

#9 Янв. 31, 2017 20:46:50

InFocus
Зарегистрирован: 2017-01-31
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

4kpt_IV
исходить при нажатии на разные кнопки?

стандартный create_polygon должен заменяться на тот режим который был выбран на кнопки.

Офлайн

#10 Янв. 31, 2017 20:48:23

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

paint в python {нужна помощь}

Т.е. нажатие на кнопки должны менять режим, а не рисовать. Аллелуйя. Теперь делаем следующее. Задаем переменную режима. При переключении на кнопку значение в ней должно меняться. При рисовании выбираем тот режим, который находится в этой переменной.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version