tkinter и pygame не хотят работать в одном окне

Я хочу создать приложение и хочу использовать tkinter в качестве графического интерфейса и одну из игровых библиотек, таких как Pyglet и Pygame. Я не нашел никакой информации о встраивании pyglet в tkinter, но нашел код с tkinter и pygame: Встраивание окна Pygame во фрейм Tkinter или WxPython. Я использую Python 3.7, и вот код, который я использую:

import pygame
import tkinter as tk
from tkinter import *
import os


root = tk.Tk()
embed = tk.Frame(root, width=500, height=500)
embed.grid(columnspan=600, rowspan=500)
embed.pack(side=LEFT)
buttonwin = tk.Frame(root, width=75, height=500)
buttonwin.pack(side=LEFT)
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib'
screen = pygame.display.set_mode((500, 500))
screen.fill(pygame.Color(0, 255, 255))
pygame.display.init()
pygame.display.update()


def draw():
    pygame.draw.circle(screen, (0, 0, 0), (250, 250), 125)
    pygame.display.update()
    button1 = Button(buttonwin, text='Draw', command=draw)
    button1.pack(side=LEFT)
    root.update()


while True:
    pygame.display.update()
    root.update()

Он создает 2 окна, когда я хочу создать только одно. Что происходит не так? Спасибо!


person crackanddie    schedule 15.01.2021    source источник
comment
Я думаю, что ответ, который вы связали, был для python2. Почему вы хотите это сделать, pygame не так уж сложно сделать gui в   -  person Rolv Apneseth    schedule 15.01.2021
comment
Это не работает на pygame 2.x. Вместо этого используйте pygame 1.9.x.   -  person acw1668    schedule 15.01.2021
comment
@RolvApneseth У меня есть причина использовать только tkinter. Насколько я помню, в tkinter есть текстовое поле, где вы можете выделить текст и изменить его цвет.   -  person crackanddie    schedule 15.01.2021
comment
Я не смог установить pygame==1.9.6 с помощью терминала и pycharm. У кого-то были такие же проблемы: stackoverflow.com/questions/50392215/. Но мне это не помогло. Так что я все еще пытаюсь установить его :)   -  person crackanddie    schedule 15.01.2021
comment
acw1668 прав, см. github.com/pygame/pygame/issues/1574   -  person sloth    schedule 15.01.2021
comment
@ленивец и что мне делать? :) Извините, но я действительно не понимаю. Вопрос все еще открыт. Я пытался установить pygame 1.9.6, но возникают только ошибки. Я пробовал питоны 3.6.1, 3.7 и 3.9, и везде я не мог установить pygame 1.9.x.   -  person crackanddie    schedule 15.01.2021
comment
Какая ошибка при попытке установить pygame 1.9.6? Лучше использовать Python 3.8, потому что в версии 1.9.6 нет готового пакета для Python 3.9.   -  person acw1668    schedule 15.01.2021
comment
в одно окно их две вместить невозможно.   -  person    schedule 15.01.2021
comment
@ acw1668 EOFError. И почему лучше использовать 3.8, когда я пробовал даже 3.6 и 3.7? И я собираюсь открыть новый вопрос о stackoverflow, потому что это другая тема.   -  person crackanddie    schedule 15.01.2021
comment
Как вы установили pygame? Странно получать EOFError при использовании pip install -U pygame==1.9.6. Использование Python 3.6 и 3.7 допустимо, если для этой версии есть готовый пакет. У меня нет проблем с установкой pygame 1.9.6 на мой Python 3.8 под Windows 10. И код отлично работает в моей среде.   -  person acw1668    schedule 15.01.2021
comment
@ acw1668 хорошо, я могу попробовать на 3.8. Я открыл новый вопрос для проблемы: stackoverflow.com/questions/65738380/   -  person crackanddie    schedule 15.01.2021
comment
@acw1668 на 3.8 тоже не работает, те же ошибки   -  person crackanddie    schedule 15.01.2021


Ответы (1)


Спасибо acw1668! Здесь вы можете скачать колеса pygame 1.9.6: https://pypi.org/project/pygame/1.9.6/#files. И все отлично работает с python 3.8!

person crackanddie    schedule 15.01.2021