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個獨立的框架(如您所做的那樣)並添加按鈕usign'grid()'而不是'pack()'。對於每一幀,將其行(每幀一行)和列(等於代碼中'j's的數量)配置爲權重等於1.當然,設置「寬度」和「高度」爲每個按鈕。它必須工作。 –