首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter记忆游戏

Tkinter记忆游戏
EN

Stack Overflow用户
提问于 2020-11-01 18:49:42
回答 1查看 284关注 0票数 0

我正试图用Tkinter制作一个记忆游戏,如标题所示。这是我的密码:

代码语言:javascript
复制
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 1 4 6 5 3 7 7 7 4 8 8 3 6 2

Tkinter窗口:

当我点击按钮开始

由于某种原因,按钮是空的。我该怎么解决这个问题?此外,在一般的记忆游戏中,有哪些提示?

EN

回答 1

Stack Overflow用户

发布于 2020-11-01 19:10:00

该按钮为空,因为您正在清除文本-两次。

移除这些循环:

代码语言:javascript
复制
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)

对于内存游戏,默认情况下按钮不应该是空白的吗?只有当用户单击按钮时,数字才会出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64635674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档