С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 0 / 1
Регистрация: 01.06.2019
Сообщений: 61

Создание кнопок с pyglet и pymunk

26.03.2020, 21:43. Показов 2070. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброе время суток, потихоньку ковыряясь в pyglet, с диким ужасом обнаружил что в нем нельзя просчитывать столкновения (Серьезно? Вот объясните мне кто в теме как можно создавать игровую библиотеку без просчета столкновений? И при этом pyglet якобы считается лучше pygame?), пришлось еще ковырятся в pymunk. В итоге по урокам пытался создать обычные кнопки.
Цель была следующей изначально на экране прорисовывается 2 кнопки, правая вызывает 3 кнопку(упрощенная модель меню или списка что то вроде), левая эту 3 кнопку убирает, ну а если нажать на 3 кнопку просто выведет текст что кнопка работает.
У меня затруднения со следующими моментами.

1) Самое важное я без понятия как убрать кнопку

2) Как прописать 3 кнопку(да и вообще любые кнопки) не создавая ее при запуске сцены

3) Когда я пытался своими псевдознаниями решить 1 проблему я наткнулся на ... интересный баг что ли... не знаю как сказать правильно, а именно если в моем текущем коде призвать 3 кнопку а потом попытатся ее удалить вы можете увидеть что она удаляется из списка, но это если в списке только одна кнопка, тоесть если призвать кнопку дважды то кнопка удаления будет ругаться, но если призвать один раз и удалить то проблем нет. Кто может объяснить подробнее сей момент?

мой скромный код и текстурки в архиве.
Вложения
Тип файла: zip pyglet test 4.zip (7.6 Кб, 17 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2020, 21:43
Ответы с готовыми решениями:

pyglet создание анимации
Привет всем! Пытаюсь разобраться с программой которая должна вращать картинку с шаром для боулинга. Код взят с англоязычного сайта. ...

Создание кнопок в рантайме по клику мыши. Как прекратить создание?
Здравствуйте форумчане. Столкнулся со следующей проблемой. В поле Edit1 я ввожу число(например 5) и хочу создать такое количество кнопок на...

LinearLayout, не получается программное создание создание кнопок
Ребят, рисую на LinearLayout. Почему получается программно создать только одну кнопку? Как сделать так, что бы --- сколько я бы нажал на...

3
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,301
27.03.2020, 07:18
Цитата Сообщение от Kxarog Посмотреть сообщение
интересный баг что ли...
Это не баг, а неправильное удаление элемента из списка
Сделать можно так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@window.event
def on_draw():
    window.clear()
    space.debug_draw(options)
    button_1.draw()
    button_2.draw()
    for item in button_group:
        item.draw()
    #button_3.draw() если кнопку сразу прописать она появляется при запуске
 
 
@window.event
def on_mouse_press(x, y, button, modifiers):
    if button == mouse.LEFT:
        hit = space.point_query_nearest((x, y), 0, pymunk.ShapeFilter())
        if hit:
            if hit.shape.body.id == 2:
                print("призванная кнопка работает")            
            if hit.shape.body.id == 1:
                if len(button_group) == 0:
                    button_group.append(Button(space, 2, (500, 300), icon_start))
            if hit.shape.body.id == 0:   
                if len(button_group) > 0:  
                    button_group.remove(*button_group)
А с удалением действительно проблемы, удалять должна команда space.delete(obj), но она не удаляет
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,301
27.03.2020, 07:18
Цитата Сообщение от Kxarog Посмотреть сообщение
интересный баг что ли...
Это не баг, а неправильное удаление элемента из списка
Сделать можно так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@window.event
def on_draw():
    window.clear()
    space.debug_draw(options)
    button_1.draw()
    button_2.draw()
    for item in button_group:
        item.draw()
    #button_3.draw() если кнопку сразу прописать она появляется при запуске
 
 
@window.event
def on_mouse_press(x, y, button, modifiers):
    if button == mouse.LEFT:
        hit = space.point_query_nearest((x, y), 0, pymunk.ShapeFilter())
        if hit:
            if hit.shape.body.id == 2:
                print("призванная кнопка работает")            
            if hit.shape.body.id == 1:
                if len(button_group) == 0:
                    button_group.append(Button(space, 2, (500, 300), icon_start))
            if hit.shape.body.id == 0:   
                if len(button_group) > 0:  
                    button_group.remove(*button_group)
А с удалением действительно проблемы, удалять должна команда space.delete(obj), но она не удаляет
0
1 / 0 / 1
Регистрация: 01.06.2019
Сообщений: 61
27.03.2020, 19:02  [ТС]
Цитата Сообщение от tooru Посмотреть сообщение
А с удалением действительно проблемы, удалять должна команда space.delete(obj), но она не удаляет
Трагедия...Настоящая трагедия...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.03.2020, 19:02
Помогаю со студенческими работами здесь

Pyglet примитивные пример
Здравствуйте! Попробовал нарисовать полигон с помощью pyglet, но окно просто черное: import pyglet from pyglet.gl import * ...

Pyglet, прорисовка карты
Доброе время суток, помогите пожалуйста в следующем вопросе. Хотел с помощью pyglet нарисовать карту на основе текстового шаблона, в итоге...

Pyglet, проблемы с анимацией
Заинтересовался библиотекой pyglet, потихоньку читая документацию и находя хоть какие то примеры, попробовал сделать небольшую анимацию при...

Что можете сказать о pyglet?
Здравствуйте, собственно суть вопроса понятна из названия темы. Листал информацию по созданию игр на python и нашел упоминание про pyglet....

pyglet.window не хочет работать
При обращении к команде window = pyglet.window.Window() выдает ошибку ContextException: Unable to share contexts. В инете так и не нашел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru