ユーザにクリックを要求するたびに1文字の文字列を要求し、正しいキーを押したときにのみゲームを続行します。Python tkinterの入力プロンプト
キー押下部に問題があります。私は、ボタン上のテキストを取得し、それがプロンプト文字と一致するかどうかをテストしたい、エントリウィジェットと一致する場合は次の文字を要求する。
ランダムにインポートして文字をシャッフルし、毎回異なる文字を生成するようにしました。私はrandom.shuffle(alist)
を追加しませんでした。なぜなら、それは動作しないからです。
from tkinter import *
from tkinter.ttk import *
import random
import tkinter
class KeyboardGame:
def __init__(self):
window = Tk()
window.title('haha')
self.value = StringVar()
self.value.set('click on any key to start...')
btm_frame = Frame(window, relief=RAISED)
entry = Entry(window, text=self.value)
entry.grid(row=0, column=0, padx=40, pady=5, sticky='EW')
for i in ['ixnsywfhze', 'uobpqgtav', 'lmjkcdr']:
frame1 = Frame(btm_frame)
for j in i:
button = Button(frame1, text=j, command=self.game)
button.pack(side=LEFT)
frame1.pack(padx=2, pady=2)
btm_frame.grid(row=1, column=0, padx=5, pady=5)
window.mainloop()
def game(self):
n = 0
alist = ['h', 'c', 'p', 'e', 'm', 'n', 'd']
self.value.set(alist[n])
while button['text'] != alist[n]:
self.value.set(alist[n])
n += 1
KeyboardGame()
こんにちはBillal、に感謝問題を解決する。私はまた、キーが正方形に見えるようにする必要があり、私は高さと幅を設定しようとしましたが、動作しません。あなたはそれを手伝ってもらえますか? – chrisgjh
あなたは3つの別々のフレームを作成し、 'pack()'の代わりに 'grid()'を使用してボタンを追加することができます。各フレームに対して、その行(フレームあたり1行)と列(コード中の 'j 'の数に等しい)を設定して、重みが1になるようにします。もちろん、' width'と 'height'を各ボタン。それは機能しなければならない。 –