

### 実行環境

  * OS: Windows 11 Pro・WSL2・Ubuntu 22.04.2 LTS
  * 仮想環境: venv
  * 言語: Python 3
  * テキストエディタ: VS Code
  * tkinterを使用
  * 標準モジュールのみで作成

## 期待値

  * 入力欄が空白の場合は"解答を入力してください。"と表示
  * 「お題」と入力欄に入力した解答が一致した場合は"正解です！やったね(^^♪"と表示
  * 「お題」と解答が一致しなかった場合は"不正解でした(´；ω；｀)ﾌﾞﾜｯ"と表示
  * 補足: 解答を入力せずにEnterキーを押しても、正しい解答を入力しても、"不正解でした(´；ω；｀)ﾌﾞﾜｯ"しか出現しない

### 再現手順

  1. 仮想環境をvenvを使って作成
  2. 先程記述したソースコードを実行
  3. Windowsの入力欄に解答を入力/解答を入力しない/間違った解答を入力する
  4. 3.のいずれの場合でも"不正解でした(´；ω；｀)ﾌﾞﾜｯ"が出現する

### ソースコード

[code]

    from tkinter import *
    import random
    
    # お題のリスト（省略）
    
    # お題の変更を行う処理
    def switch_question():
        new_question=random.choice(QUESTIONS)
        theme.set(f"お題: {new_question}")
        result.set("")
        
    # 正誤判定処理
    def check_answer(event):
        user_input = input.get()
        if user_input=="":
            result.set("解答を入力してください。")
        elif user_input==theme.get()[5:]:  # [5:] は "お題: " を取り除くため
            result.set("正解です！やったね(^^♪")
        else:
            result.set("不正解でした(´；ω；｀)ﾌﾞﾜｯ")
    
    # 新しいWindowを作成（省略）
    
    # StringVarの設定
    theme = StringVar(root)
    theme.set("お題: " + random.choice(QUESTIONS))
    
    result = StringVar(root)
    
    # Frameの設定（省略）
    
    # Frameをpackで配置（省略）
    
    # Widgetの設定
    topic = Label(frame, textvariable=theme)
    input = Entry(frame, width=150)
    input.insert(0, "")
    result_label = Label(frame, textvariable=result)
    button = Button(frame, text="新しいお題", command=switch_question)
    
    # 要素を配置
    topic.pack()
    input.pack()
    result_label.pack()
    button.pack()
    
    # Enterキーを押すと判定が出る
    input.focus_set() # 初期状態でinputにフォーカスを当てる
    input.bind("<Return>", check_answer) # 入力完了時に判定処理を実行
    
    root.mainloop()
    
[/code]


CC BY-SA 4.0
2023-10-30T13:35:33.360
96624
2023-10-31T00:57:55.353
2023-10-30T16:33:00.213
3060
56107
question
python python3 tkinter
タイピングゲームの正誤判定処理を正常に動作するためのやり方を教えてください。


"お題: "は4文字なので、

`user_input==theme.get()[5:]:`  
を  
`user_input==theme.get()[4:]:`

に置き換えたら正常に動作しました。


CC BY-SA 4.0
2023-10-31T00:57:55.353
96625
2023-10-31T00:57:55.353
56107
96624
answer