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.当然,设置“宽度”和“高度”为每个按钮。它必须工作。 –