Найти - Пользователи
Полная версия: paint в python {нужна помощь}
Начало » Python для новичков » paint в python {нужна помощь}
1 2 3 4
InFocus
Здравствуйте, прошу о помощи.

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

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

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


Вот и код на котором ошибка…
4kpt_IV
Попробую пояснить попроще.

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

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

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

А в этой что?

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

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

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

Что-то я сломался…
Перечитываю текст, вроде делаю так как надо, но все равно не вникаю.
Не работает(
4kpt_IV
Еще проще.
Что должно происходить при нажатии на разные кнопки?
InFocus
4kpt_IV
исходить при нажатии на разные кнопки?

стандартный create_polygon должен заменяться на тот режим который был выбран на кнопки.
4kpt_IV
Т.е. нажатие на кнопки должны менять режим, а не рисовать. Аллелуйя. Теперь делаем следующее. Задаем переменную режима. При переключении на кнопку значение в ней должно меняться. При рисовании выбираем тот режим, который находится в этой переменной.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB