質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

3304閲覧

python3のプログラムを実行したとき、ウィンドウは表示されるがキー入力ができない問題を解決したい

ArgNull_Q

総合スコア11

Python 3.x

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

0グッド

1クリップ

投稿2017/04/16 14:02

###前提・実現したいこと
Python3のキー操作に関する質問です。
macのターミナルからプログラムを起動したところ、ウィンドウは表示されますが、キー入力による操作を受け付けません。
キーを入力してもターミナルに文字が入力されてしまいます。
どなたかご教授をお願いします。

コード

import pygame pygame.init() screen=pygame.display.set_mode((400, 400)) screen_rect=screen.get_rect() player=pygame.Rect(180, 180, 20, 20) run=True while run: for e in pygame.event.get(): if e.type == pygame.QUIT: run = False keys = pygame.key.get_pressed() if keys[pygame.K_w]: player.move_ip(0, -1) if keys[pygame.K_a]: player.move_ip(-1, 0) if keys[pygame.K_s]: player.move_ip(0, 1) if keys[pygame.K_d]: player.move_ip(1, 0) player.clamp_ip(screen_rect) # ensure player is inside screen screen.fill((255,255,255)) pygame.draw.rect(screen, (0,0,0), player) pygame.display.flip()

###試したこと
プログラムが間違っているかと思い、他のサンプルコードも試しましたが、やはりウィンドウが表示されるだけでキー入力を受け付けません。

###補足情報(言語/FW/ツール等のバージョンなど)
PC:mac mini 2014
ver:python 3.6.0 (anaconda4.3.1)

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

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

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

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

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

guest

回答1

0

ベストアンサー

Win10x64+Anaconda, pygameはCogSci / packages / pygame 1.9.2a0 よりインストールにて正常に動作しました。

以下のソースでは、1秒毎に描画ウインドウにフォーカスがあるかをターミナルに出力しています。

Python

1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3import pygame,time 4 5pygame.init() 6screen=pygame.display.set_mode((400, 400)) 7screen_rect=screen.get_rect() 8player=pygame.Rect(180, 180, 20, 20) 9 10print("loop start.") 11cnt = 0 12run=True 13while run: 14 15 # フォーカス状態を出力 16 if cnt % 100 == 0: 17 print( pygame.key.get_focused()) 18 19 for e in pygame.event.get(): 20 if e.type == pygame.QUIT: run = False 21 22 keys = pygame.key.get_pressed() 23 if keys[pygame.K_w]: player.move_ip(0, -1) 24 if keys[pygame.K_a]: player.move_ip(-1, 0) 25 if keys[pygame.K_s]: player.move_ip(0, 1) 26 if keys[pygame.K_d]: player.move_ip(1, 0) 27 28 player.clamp_ip(screen_rect) # ensure player is inside screen 29 screen.fill((255,255,255)) 30 pygame.draw.rect(screen, (0,0,0), player) 31 pygame.display.flip() 32 33 # 動作ウェイト 34 time.sleep(0.01) 35 cnt = cnt + 1 36 37print("loop end.") 38pygame.quit()

投稿2017/04/17 07:00

can110

総合スコア38266

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

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

ArgNull_Q

2017/04/17 12:41

can110様 回答ありがとうございます。 記入いただいたコードを私の環境で実行しましたところ、ターミナルには毎秒「1」が出力されることが確認できました。しかし、ウィンドウ上の黒い四角をキーボードで動かすことはできませんでした。 windows環境(win10x64+Anaconda pygame1.9.4dev0 )でも実行してみましたが同様です。 どのキーを押してもキャラクターを動かすことよりターミナルへの文字入力が優先されてしまいます。 インストールしたバージョンなどが問題なのでしょうか
can110

2017/04/17 14:09

フォーカスは来ていますね。環境もpygameバージョンもほぼ同じようですが… 念のため、Win10x64環境にてcondaからインストールしても同じでしょうか?
ArgNull_Q

2017/04/17 14:38

返信ありがとうございます。 windows10x64にてpygameをインストールし直してみました。 pygameのバージョンは1.9.3ですが、画像を動かせることが確認できました! macの方でもpygameのverを変えて試してみたいと思います。
ArgNull_Q

2017/04/17 14:52

macにてpygameのバージョンを変えてみましたがこちらは上手く行きませんでした。 windows環境ではプログラムを起動するとpygame windowのタスクバーが表示されますが、macで起動してもdockにpygame windowが表示されません。別のところに原因がありそうです。
ArgNull_Q

2017/04/19 22:38

結局Mac OSを再インストールしましたが、正常に動かすことができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問