作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试让 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
最佳答案
All I want is a pygame window inside a tkinter window.
我已经采用了您引用的代码并对其进行了一些清理,以更好地适应 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()
关于Python:Pygame 安装但运行不佳(如果有的话)。 (麦克,莫哈维),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58397263/
我是一名优秀的程序员,十分优秀!