下記、プログラムをShellで実行すると問題なく動きます。内容は、
➀、質問に対して、OKなら表示されているランダムな数字を入力して、OKボタンを押す
➁、同じ数字が入力されていれば、リスト内の次の質問と次の(ランダムな)数字が表示される
➂、異なる数字が入力されれば、再度、同じ質問と先ほどとは異なる数字が表示される
python
1import random 2 3q=["Aでいいですか?","Bでもいいですか?","Cでもいいですよね?"] 4q.append("Dも追加していいですか?") 5 6g=len(q) 7n=0 8 9while True : 10 print(q[n]) 11 a=random.randint(0,100) 12 print(a) 13 b=int(input("""OKなら同じ数字を入力してください 14→""")) 15 16 if a!=b: 17 continue 18 else: 19 n=(n+1)% g
実行しますとShellで下記のように表示されます
~・~・~・~・~・~・~・~・~・~・~・~・~・~・
Aでいいですか?
8
OKなら同じ数字を入力してください
→8
Bでもいいですか?
55
OKなら同じ数字を入力してください
→55
Cでもいいですよね?
19
OKなら同じ数字を入力してください
→19
Dも追加していいですか?
21
OKなら同じ数字を入力してください
→21
Aでいいですか?
~・~・~・~・~・~・~・~・~・~・~・~・~・~・
これをtkinterを使って再現したく、ネットにあった構文を拝借して、上記のコードを各所の思う所に当て込んで下記のように実行すると、
「line 45, in <module>
if a != c:
NameError: name 'c' is not defined」
と、エラーになります。
python
1import tkinter as tk 2import random 3 4 5# ウィンドウを作成 6win = tk.Tk() 7win.title("質問") 8win.geometry("500x250") 9 10# 部品を作成 11label1 = tk.Label(win, text="----") 12label1.pack() 13 14label2 = tk.Label(win, text="----") 15label2.pack() 16 17label3 = tk.Label(win, text="OKなら同じ数字を入力してokを押してください") 18label3.pack() 19 20text1 = tk.Entry(win) 21text1.insert(tk.END, '') 22text1.pack() 23 24# 作業を作製 25q=["Aでいいですか?","Bでもいいですか?","Cでもいいですよね?"] 26q.append("Dも追加していいですか?") 27 28g=len(q) 29n=0 30 31while True : 32 label1["text"]=q[n] 33 a=random.randint(0,100) 34 label2["text"]=a 35 36 def ok_click(): 37 c= int(text1.get()) 38 39 if a != c: 40 continue 41 else: 42 n=(n+1)% g 43 44 45 46# ボタンを作成 47okButton = tk.Button(win, text='ok',command=ok_click) 48okButton.pack() 49 50 51# ウィンドウを動かす 52win.mainloop() 53
ifの後ろにある、cが定義されていないとの事で、def関数の中にあるcが受け渡せていないのだと思います
def関数の位置が悪いのかなと思い、
python
1def ok_click(): 2 while True : 3 label1["text"]=q[n] 4 a=random.randint(0,100) 5 label2["text"]=a 6 c= int(text1.get()) 7 8 if a != c: 9 continue 10 else: 11 n=(n+1)% g
とすると、エディタ上でcontinueが赤くハイライトされ、SyntaxError「'continue'not properly in loop」が表示されます
●ご教授頂きたいこと
➀、冒頭のShellで実行できるコードを、tkinterで実行できるコード
➁、tkinter内でOKボタンをクリックする以外にも、キーボードの「Enter」ボタンで次の質問に進めるコード
➂、text内に半透明で「ここに数字を入力してください」とデフォルト表示されており、クリックすると消えるコード
欲張ってすみません、どれか一つだけでも結構です
よろしくお願いいたします
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/06 06:59