首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的MineSweeper (带有tkinter)

Python中的MineSweeper (带有tkinter)
EN

Stack Overflow用户
提问于 2014-08-13 04:33:31
回答 1查看 3.9K关注 0票数 1

我刚用Python调试了我的大部分MineSweeper代码,但是游戏函数存在一个问题,它决定了输赢。如果我赢了,它就不会显示想要的消息框并确认胜利。如果失败了,它将显示一条错误消息,即messagebox (内置于函数中的tkinter )是未定义的。

这是我的游戏代码:

代码语言:javascript
复制
from tkinter import *
import random

...

def CheckWin(self):
    '''Checks if player won'''
    doneList = []
    for key in self.cells.keys():
        if self.cells[key].clicked == True and self.cells[key].value != 9:
            doneList.append(self.cells[key])
    if len(doneList) == int(height)*int(width)-int(numBombs):
        messagebox.showinfo('Minesweeper','Congratulations -- you won!', parent=self)
        self.winner = True

def CheckLoss(self):
    '''Checks if player lost'''
    self.loser = True
    self.flagTrack['text'] = '0'
    messagebox.showerror('Minesweeper','KABOOM! You lose.', parent=self)
    for key in self.cells.keys():
        if self.cells[key].value == 9:
            self.cells[key].flagged = False
            self.cells[key].expose()
EN

回答 1

Stack Overflow用户

发布于 2014-08-13 04:41:45

如果失败了,它将显示一条错误消息,即messagebox (内置于函数中的tkinter )是未定义的。

messagebox不是tkinter中的一个函数,而是一个模块。执行from pkg import *并不导入pkg的子模块,只导入在pkg中直接定义的内容。

所以,你可能想这么做:

代码语言:javascript
复制
from tkinter import messagebox

(顺便说一句,这是from foo import *可能令人困惑的原因之一,但并不是唯一的原因。这就是为什么它不被推荐,除了在交互解释器中玩,或者在一些特殊情况下。)

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

https://stackoverflow.com/questions/25278124

复制
相关文章

相似问题

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