🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ウィンドウ

コンピューター用語において、ウィンドウとはユーザとプログラムのやり取りを可能にするGUIの枠組みのことをいいます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3240閲覧

Pyxelで作成したウィンドウを終了できない

Ieyasu_tenka

総合スコア12

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ウィンドウ

コンピューター用語において、ウィンドウとはユーザとプログラムのやり取りを可能にするGUIの枠組みのことをいいます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/17 12:09

前提・実現したいこと

Pyxelを使って簡単なゲームを作成しており、ゲーム終了時のウィンドウ削除を行おうとしています。

発生している問題・エラーメッセージ

Qキーで終了しようとしても(Appクラスのupdate関数内に記述)、escキーで終了しようとしても、ウィンドウが応答なしになってしまい、正常に終了できません。原因の見当がつく方、ぜひ教えていただけたらありがたいです。

・終了処理以外はうまくいきます。
・WinPython付属のSpyder3上で実行しています。
・pyxelのバージョンは1.4.3ですが、1.4.2でも終了できませんでした。
・学校のPCと自宅のPC(ともにWin10)のどちらでも同じ結果になってしまいます。
・同じくWinPython付属のIDLEでも同じく正常に終了できません。
・公式のいずれのサンプルプログラムでも終了できません。以下にはそのうちの「01_hello_pyxel.py」をそのまま貼っておきます。

該当のソースコード

Python

1import pyxel 2 3 4class App: 5 def __init__(self): 6 pyxel.init(160, 120, caption="Hello Pyxel") 7 pyxel.image(0).load(0, 0, "assets/pyxel_logo_38x16.png") 8 pyxel.run(self.update, self.draw) 9 10 def update(self): 11 if pyxel.btnp(pyxel.KEY_Q): 12 pyxel.quit() 13 14 def draw(self): 15 pyxel.cls(0) 16 pyxel.text(55, 41, "Hello, Pyxel!", pyxel.frame_count % 16) 17 pyxel.blt(61, 66, 0, 0, 0, 38, 16) 18 19 20App() 21

試したこと

sys.exit()をpyxel.quit()の代わりに書いてみましたが、相変わらず応答なしでした。
(ただ、もしそれで終了できたとしても、公式のサンプルがうまく動かない時点で根本的解決にはなりませんが...。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daregada

2021/02/17 12:35

まずは、端末(ターミナルとかコマンドプロンプトとか)で公式サンプルのあるディレクトリに移動後、「python 01_hello_pyxel.py」などとしてサンプルを実行してください。実行後にQキーなどを押して正常に終了するのであれば、「SpyderとIDLEが原因」だとはっきりします。
Ieyasu_tenka

2021/02/17 12:44

試してみると、コマンドプロンプトでは正常に終了できました。
guest

回答1

0

ベストアンサー

こちらで確認したところ、同じ症状が出ました。つまり、IDLEとSpyderのどちらでも、Qキーやウィンドウを閉じる操作の後でウィンドウが応答しなくなりました。

コマンドプロンプトやVisual Studio Codeから実行したときは、正常にウィンドウが閉じられるので、IDLEとSpyderの問題ですね。これらのアプリでは、プログラム実行後にプログラムを終了させないことが原因です。

IDLEでは、プログラム実行後に、IDLEのウィンドウ(「>>>」が表示されるやつ)で、変数の値などを確認できます。「exit()」を実行すれば、プログラムは終了し、Pyxelのウィンドウも閉じられます。

Spyderでは、右下のIPythonのコンソールに「exit」と入力してください。

投稿2021/02/17 13:17

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ieyasu_tenka

2021/02/17 14:03

なるほど。毎回コンソールを再起動する手間に悩まされていたので、プログラミングの練習もより捗りそうです。次になにか質問する際にも、よろしければお力添えをお願いします。わざわざ確認いただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問