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

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

26.03.2020, 21:43. Показов 2102. Ответов 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,302
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,302
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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru