Как одновременно открыть окно Pygame и окно Tkinter?

avatar
NotMyName
16 сентября 2020 в 08:33
406
1
2

Я делаю простую игру, используя модуль Pygame. Мне нужно, чтобы окно Tkinter было открыто рядом с окном Pygame.

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

Теперь единственное решение, которое я могу придумать, - это использование многопоточности. Но я не могу это реализовать.

Как мне это сделать? Я был бы очень признателен за помощь здесь. Спасибо!

Источник

Ответы (1)

avatar
mousetail
16 сентября 2020 в 08:50
3

В pygame существует фундаментальная проблема дизайна, из-за которой невозможно открыть окно, если у процесса уже есть окно. Это также предотвратит открытие других окон во время работы. Однако вы можете открыть столько окон TK, сколько захотите, и вы можете встроить окно pygame в рамку чертежа SDL внутри окна TK.

См. Этот ответ о том, как использовать фрейм чертежа: Встраивание окна Pygame в фрейм Tkinter или WxPython

См. Этот ответ о том, как создать несколько окон в tkinter: Как открыть несколько окон в Tkinter

NotMyName
16 сентября 2020 в 09:21
0

Я смог получить то, что хотел, установив Tkinter frame-width = 0. Теперь это очень похоже на окно Pygame, и я могу открывать несколько окон Tkinter. Действительно полезно!

NotMyName
16 сентября 2020 в 09:34
0

У меня просто вопрос, я печатаю значения положения мыши с помощью pygame.mouse.get_pos(). Но теперь значения положения мыши не обновляются при перемещении. Он отлично работал до встраивания окна Pygame в окно Tkinter. Но теперь мне нужно щелкнуть, только тогда я начинаю получать новые значения позиции (место, где я щелкнул)

mousetail
16 сентября 2020 в 09:39
0

Мне жаль, что я не знал. Возможно, система событий не работает по умолчанию во встроенных окнах, и вам нужно будет обнаруживать события в tkinter и перенаправлять их в pygame с pygame.event.post()