Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使Tkinter Photoimage崩溃python程序_Python 3.x_Crash_Tkinter_Minesweeper - Fatal编程技术网

Python 3.x 使Tkinter Photoimage崩溃python程序

Python 3.x 使Tkinter Photoimage崩溃python程序,python-3.x,crash,tkinter,minesweeper,Python 3.x,Crash,Tkinter,Minesweeper,我正在用tkinter编写一个扫雷游戏,看起来一切都正常,但是每次点击几下python就会崩溃,我相信这是因为我添加了用于标记地雷位置的“标志”的图像。下面是绘制所有单元格的函数,每次移动/单击都会调用该函数 def draw_cake_cell(canvas, row, col): # draws different cells on the board (blank cell, numbers, cake flags) margin = 5 cellSize = 3

我正在用tkinter编写一个扫雷游戏,看起来一切都正常,但是每次点击几下python就会崩溃,我相信这是因为我添加了用于标记地雷位置的“标志”的图像。下面是绘制所有单元格的函数,每次移动/单击都会调用该函数

def draw_cake_cell(canvas, row, col):
    # draws different cells on the board (blank cell, numbers, cake flags) 
    margin = 5
    cellSize = 30
    board = canvas.data['board']
    mask = canvas.data['mask']
    cake_count = canvas.data['cake_count']
    player_board = canvas.data['player_board']
    left = margin + col*cellSize
    top = margin + row*cellSize
    bottom = top + cellSize
    right = left+cellSize
    flag_img = PhotoImage(file="flag.gif")
    flag_label = Label(image = flag_img)
    flag_label.image = flag_img
    cake_img = PhotoImage(file = "cakeflag.gif")
    cake_label = Label(image = cake_img)
    cake_label.image = cake_img
    canvas.create_rectangle(left,top, right, bottom, fill = 'gray')
    if board[row][col] == -1:
       if canvas.data['isGameOver'] == True:
            canvas.create_image((left+right)/2,(top+bottom)/2,image = cake_img)
    elif mask[row][col] == -2:
        canvas.create_image((left+right)/2,(top+bottom)/2,image = flag_img)
    else:
       if cake_count[row][col] > 0 and player_board[row][col] == 1:
            value = cake_count[row][col]
            canvas.create_rectangle(left,top,right,bottom, fill = 'white')
            canvas.create_text((left+right)/2,(top+bottom)/2 , text = str(value), font = ('Helvetica',12))             
       if mask[row][col] == -2:
            canvas.create_image((left+right)/2,(top+bottom)/2,image = flag_img)
       if cake_count[row][col] == 0 and player_board[row][col] == 1:
            canvas.create_rectangle(left,top,right,bottom, fill = 'white')

由于您使用的是python3,
(左+右)/2
浮点
,而不是
int
。也许这就是问题所在-使用
(左+右)//2

请添加堆栈跟踪,并缩进代码。Python不提供堆栈跟踪,我得到的只是“pythonw.exe已停止工作”,然后程序继续崩溃。检查了float和int,这似乎不是问题。另外,请注意,我之前刚刚为所有内容创建了canvas.create_oval,这似乎并没有引起问题。从解释器运行此代码,您将得到一个stacktrace。否则,请用
try:。。。例外情况除外,例如ex:print(ex)
仍然无法获取堆栈跟踪。。。用try/除了。。我在用空闲的?