pygameのスクリーンをpyqt5のサブウィンドウから開いたらエラーが出た
pygameを使って書いたスクリーンをpyqt5のサブウィンドウから開いたところ、スクリーンを閉じたときにエラーが吐かれました。以下は実際に書いてみたコードです。
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import pygame
from pygame.locals import *
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
makeWindowButton = QPushButton("&make window")
makeWindowButton.clicked.connect(self.makeWindow)
layout = QHBoxLayout()
layout.addWidget(makeWindowButton)
self.setLayout(layout)
def makeWindow(self):
game()
def game():
(w,h) = (400,400) # 画面サイズ
(x,y) = (w/2, h/2)
pygame.init() # pygame初期化
pygame.display.set_mode((w, h), 0, 32) # 画面設定
screen = pygame.display.get_surface()
player = pygame.image.load("player.png").convert_alpha() # プレイヤー画像の取得
(x, y) = (300, 200)
while (1):
pygame.display.update() # 画面更新
pygame.time.wait(30) # 更新時間間隔
screen.fill((0, 20, 0, 0)) # 画面の背景色
screen.blit(player, (x, y)) # プレイヤー画像の描画
mouse_pressed = pygame.mouse.get_pressed()
if mouse_pressed[0]: # 左クリック
x, y = pygame.mouse.get_pos()
x -= player.get_width() / 2
y -= player.get_height() / 2
for event in pygame.event.get():
# 終了用のイベント処理
if event.type == QUIT: # 閉じるボタンが押されたとき
pygame.quit()
#sys.exit()
if event.type == KEYDOWN: # キーを押したとき
if event.key == K_ESCAPE: # Escキーが押されたとき
pygame.quit()
#sys.exit()
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
#sys.exit(app.exec_())
app.exec_()
これのmakewindowボタンを押すことで、次のようなGUIが表示されます。
この新しいスクリーン上のキャラクターはドラッグすることで動かすことが出来ます。ここで、この新しく作られたスクリーンを閉じると、
File "C:/Users/toma/Desktop/pygame/practice.py", line 28, in makeWindow
game()
File "C:/Users/toma/Desktop/pygame/practice.py", line 39, in game
pygame.display.update() # 画面更新
error: video system not initialized
とエラーが出ます。何処を直せばよいのでしょうか。