Python:Pygame可安装,但运行不佳(如果有的话)。 (Mac,莫哈韦沙漠)

时间:2019-10-15 14:43:30

标签: python python-3.x tkinter pygame

我一直试图让pygame在tkinter中工作,但是我得到的只有两个单独的窗口,其他人都说它可以工作:https://stackoverflow.com/a/16550818/12221209

但是当我运行基本的pygame代码时,我所得到的只是码头上一个跳动的飞船图标-与终端中的外星人演示相同。任何人都知道如何解决此问题,因为它使我发疯。我想要的只是tkinter窗口内的pygame窗口。

import pygame
import tkinter as tkinter
from tkinter import *

(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.flip()

running = True
while running:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      running = False

1 个答案:

答案 0 :(得分:1)

  

我想要的只是tkinter窗口内的pygame窗口。

我已经采用了您引用的代码,并对其进行了一些清理,以更好地适合Python 3和PEP8。

在用示例说明问题之前更新问题之前,这是我能为您解决的最佳问题。

如果您有任何疑问,请告诉我。

import tkinter as tk
import pygame
import os


def pygame_update_loop():
    pygame.display.update()
    # Use an after loop to update the pygame window.
    # set the time in milliseconds as desired.
    root.after(100, pygame_update_loop)


def draw():
    pygame.draw.circle(screen, (0, 0, 0), (250, 250), 125)


root = tk.Tk()

pygame_frame = tk.Frame(root, width=500, height=500)
pygame_frame.pack(side='left')
tk.Button(root, text='Draw',  command=draw).pack(side='left')

os.environ['SDL_WINDOWID'] = str(pygame_frame.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib'

width, height = 300, 200
screen = pygame.display.set_mode((width, height))
screen.fill(pygame.Color(255, 255, 255))
pygame.display.init()
pygame_update_loop()
root.mainloop()