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

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

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

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

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

2回答

1073閲覧

python3 一文字キー入力の結果で分岐させたい

yoko4401

総合スコア9

Python 3.x

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

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2018/06/08 19:32

編集2018/06/11 04:34
import tkinter import time import msvcrt import keyboard questions1=[ {"question":"問1","answer":"B"}, {"question":"問2","answer":"A"}, {"question":"問3","answer":"B"}, {"question":"問4","answer":"A"}, {"question":"問5","answer":"B"}, ] pimg = tkinter.PhotoImage(file="img/Q1.png") trueimg = tkinter.PhotoImage(file="img/A1.png") falseimg = tkinter.PhotoImage(file="img/A2.png") root = tkinter.Tk() root.minsize(320, 240) canvas = tkinter.Canvas(root, width=320, height=240) canvas.place(x=0, y=0) canvas.create_image(320, 240, image=pimg) root.update() index=random.randint(5) ans=questions1[index]['answer'] while True: try: if keyboard.is_pressed('a'): print('You Pressed a Key!') # 動作確認のため keyP="A" break elif keyboard.is_pressed('b'): print('You Pressed b Key!') # 動作確認のため keyP="B" break else: pass except: break print(keyP) # 動作確認のため if keyP==ans : canvas.place(x=0, y=0) canvas.create_image(320, 220, image=trueimg,tag="illust") root.update() time.sleep(1) else: canvas.place(x=0, y=0) canvas.create_image(320, 220, image=falseimg,tag="illust") root.update() time.sleep(1) root.mainloop()

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

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

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

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

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

kazto

2018/06/09 01:36

現状うまくいかないコードを追記お願いします。
guest

回答2

0

自己解決

try:のインデントが違っていたので修正しました。

import tkinter import time import msvcrt import keyboard questions1=[ {"question":"問1","answer":"B"}, {"question":"問2","answer":"A"}, {"question":"問3","answer":"B"}, {"question":"問4","answer":"A"}, {"question":"問5","answer":"B"}, ] pimg = tkinter.PhotoImage(file="img/Q1.png") trueimg = tkinter.PhotoImage(file="img/A1.png") falseimg = tkinter.PhotoImage(file="img/A2.png") root = tkinter.Tk() root.minsize(320, 240) canvas = tkinter.Canvas(root, width=320, height=240) canvas.place(x=0, y=0) canvas.create_image(320, 240, image=pimg) root.update() index=random.randint(5) ans=questions1[index]['answer'] while True:   try: if keyboard.is_pressed('a'): print('You Pressed a Key!') # 動作確認のため keyP="A" break elif keyboard.is_pressed('b'): print('You Pressed b Key!') # 動作確認のため keyP="B" break else: pass except: break print(keyP) # 動作確認のため if keyP==ans : canvas.place(x=0, y=0) canvas.create_image(320, 220, image=trueimg,tag="illust") root.update() time.sleep(1) else: canvas.place(x=0, y=0) canvas.create_image(320, 220, image=falseimg,tag="illust") root.update() time.sleep(1) root.mainloop()

投稿2018/06/11 05:12

yoko4401

総合スコア9

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

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

0

その返り値のkeyはどういう値でしょうか。

ソースが提示されていないので、おそらくですが、

・そのコードが実行されていない
・なにか入力されてるんだけど気が付かない

のいずれかではないかと。

投稿2018/06/09 02:03

y_waiwai

総合スコア87719

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

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

yoko4401

2018/06/11 04:37

ありがとうございます。
yoko4401

2018/06/11 04:45

import tkinter as tk root = tk.Tk() frame = tk.Canvas(root, width=800, height=600) pimg = tk.PhotoImage(file="img/Q1.png") frame.place(x=0, y=0) frame.create_image(400, 300, image=pimg) imgA = tk.PhotoImage(file = 'img/A1.png') imgB = tk.PhotoImage(file = 'img/A2.png') def keyA(event): global key frame.place(x=0, y=0) frame.create_image(320, 220, image=imgA, tag="illust") root.update() def keyB(event): global key frame.place(x=0, y=0) frame.create_image(320, 220, image=imgB, tag="illust") root.update() frame.bind("a", keyA) frame.focus_set() frame.pack() frame.bind("b", keyB) frame.focus_set() frame.pack() print(key) root.mainloop()
yoko4401

2018/06/11 04:53

自己解決とまではいきませんが、別の方法で動きました。このコードは"a"キーを押したときは"A"を"b"キーを押したときは"B"を表示してその値をkeyとして保持し、問題の正解と比較させたかったのですが、キーに呼応する表示imgA,Bとは裏腹にいっきにroot.mainloop()に走ってしまい、keyの値を 取り出せない状態でした。このようなbindを使った場合のときはどうすればよかったのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問