正如标题所示,我正在尝试使用Tkinter制作记忆游戏。这是我的代码:
from tkinter import *
from tkinter import messagebox
import time
import random
difficulty = 16
rowsize= 4
columnsize = 4
numcount = 0
lastnum = 0
gotitcorrect = False
textInGrid = ''
root = Tk()
root.title("MEMORY GAME!!")
root.configure(bg='gray')
def GameStart():
menuFrame.pack_forget()
gameFrame.pack()
def Timer(tim):
time.sleep(tim)
def GetRandomNumber():
lst1 = [i for i in range(1,9)]
lst2 = [i for i in range(1,9)]
random.shuffle(lst1),random.shuffle(lst2)
numlst = lst1+lst2
return numlst
numlst = GetRandomNumber()
print(numlst)
for number in numlst:
def WrongOrRight():
global numcount, lastnum, gotitcorrect,textInGrid
if numcount == 0:
lastnum = number
numcount+=1
textInGrid = str(number)
elif numcount == 1:
if number == lastnum:
gotitcorrect = True
textInGrid=str(number)
else:
gotitcorrect = False
textInGrid=''
numcount -= 1
menuFrame = Frame(root, bg='gray')
menu = [Label(menuFrame,text='MEMORY GAME', bg = 'gray'), Button(menuFrame,command = GameStart,text = 'Start', bg='gray')]
for i in menu:
i.pack()
menuFrame.pack()
gameFrame = Frame(root, bg='gray')
cards = [[Button(gameFrame) for j in range(4)] for i in range(4)]
index = 1
card_dict = {}
for x in range(rowsize):
for y in range(columnsize):
# print(index)
print(numlst[index-1])
cards[x][y].grid(row = y, column = x, padx=20,pady=20)
cards[x][y].configure(text = str(numlst[index-1]))
cards[x][y].configure(command = WrongOrRight)
card_dict[cards[x][y]] = numlst[index-1]
index+=1
Timer(5)
for x in range(rowsize):
for y in range(columnsize):
cards[x][y].configure(text = '')
for x in range(rowsize):
for y in range(columnsize):
cards[x][y].configure(text = textInGrid)
root.grid_rowconfigure(0,weight=1)
root.grid_columnconfigure(0,weight=1)
root.grid_rowconfigure(rowsize,weight=1)
root.grid_columnconfigure(columnsize,weight=1)
root.mainloop()
它没有给出任何错误,并且似乎也没有错,但是当我运行它时,它就是这样的:
打印语句:
[2、1、4、6、5、3、7、8、7、4、5、8、3、1、6、2] 2 1 4 6 5 3 7 8 7 4 5 8 3 1 6 2
Tkinter窗口:
当我单击“开始”按钮时
由于某些原因,按钮为空。我该如何解决?另外,制作记忆游戏时有哪些技巧?
答案 0 :(得分:0)
该按钮为空,因为您要清除文本-两次。
删除这些循环:
for x in range(rowsize):
for y in range(columnsize):
cards[x][y].configure(text = '')
for x in range(rowsize):
for y in range(columnsize):
cards[x][y].configure(text = textInGrid)
对于记忆游戏,默认情况下按钮是否应该为空白?这些数字仅在用户单击按钮时出现。