'Embedding a Pygame window into a Tkinter or WxPython frame

A friend and I are making a game in pygame. We would like to have a pygame window embedded into a tkinter or WxPython frame, so that we can include text input, buttons, and dropdown menus that are supported by WX or Tkinter. I have scoured the internet for an answer, but all I have found are people asking the same question, none of these have been well answered.

What would be the best way implement a pygame display embedded into a tkinter or WX frame? (TKinter is preferable)

Any other way in which these features can be included alongside a pygame display would also work.



Solution 1:[1]

Here are some links.

Basically, there are many approaches.

  • On Linux, you can easily embed any application in a frame inside another. Simple.
  • Direct Pygame output to a WkPython Canvas

Some research will provide the relevant code.

Solution 2:[2]

According to the tracebacks, the program crashes due to TclErrors. These are caused by attempting to access the same file, socket, or similar resource in two different threads at the same time. In this case, I believe it is a conflict of screen resources within threads. However, this is not, in fact, due to an internal issue that arises with two gui programs that are meant to function autonomously. The errors are a product of a separate thread calling root.update() when it doesn't need to because the main thread has taken over. This is stopped simply by making the thread call root.update() only when the main thread is not doing so.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community
Solution 2 trevorKirkby