我的程序崩溃(python.exe已停止工作)

我的程序崩溃(python.exe已停止工作),python,eclipse,crash,tkinter,Python,Eclipse,Crash,Tkinter,所以我为学校做了一个项目,但它不会运行,我不知道为什么。每次我按下我制作的“开始”按钮,整个程序都会冻结并停止工作,看到我之前制作了一个类似的程序(这个程序更干净),我真的很困惑。 代码如下: from tkinter import * root=Tk() root.minsize(width=3, height=100) root.title("Counter") list=[] list.append(0) def counter(): t = 10 c = 0

所以我为学校做了一个项目,但它不会运行,我不知道为什么。每次我按下我制作的“开始”按钮,整个程序都会冻结并停止工作,看到我之前制作了一个类似的程序(这个程序更干净),我真的很困惑。 代码如下:

from tkinter import *

root=Tk()
root.minsize(width=3, height=100)
root.title("Counter")

list=[]
list.append(0)

def counter():
    t = 10
    c = 0
    for row in list:
        if (t < 60) or (c < 5):
            l=Label(root, text=t).grid(row=1, column=c)
            t=10+10
            c=0+1
            list.append(t)
    print("") #This is just for debugging purpose
    for row in list:
        if (t < 110) or (c < 10):
            c=0
            ll=Label(root, text=t).grid(row=2, column=c)
            c=0+1
            t+10
            list.append(t)
    return

label=Label(root, text="...").grid(row=0, column=0)
b=Button(root, text="Start", command=counter).grid(row=0, column=1)
label=Label(root, text="...").grid(row=0, column=2)

root.mainloop()
从tkinter导入*
root=Tk()
root.minsize(宽度=3,高度=100)
根标题(“计数器”)
列表=[]
列表。追加(0)
def计数器():
t=10
c=0
对于列表中的行:
如果(t<60)或(c<5):
l=标签(根,文本=t).网格(行=1,列=c)
t=10+10
c=0+1
list.append(t)
打印(“”)#这只是为了调试
对于列表中的行:
如果(t<110)或(c<10):
c=0
ll=标签(根,文本=t).网格(行=2,列=c)
c=0+1
t+10
list.append(t)
返回
label=label(根,text=“…”).grid(行=0,列=0)
b=按钮(root,text=“Start”,command=计数器)。网格(行=0,列=1)
label=label(根,text=“…”).grid(行=0,列=2)
root.mainloop()

谢谢你给我的建议,我想这是你的功劳问题是您正在修改正在迭代的列表。除此之外,
list
不是一个好名字,因为它隐藏了内置的名称,您总是在列表中附加一个元素。
此外,由于
t
始终分配给
20
,而
c
分配给
1
,它被冻结的原因是您在循环列表时正在修改列表:

list.append(t)
你做了两次。您不能以这种方式执行,您应该使用单独的列表来执行您试图执行的任何操作,或者使用某种列表迭代器。还如前所述

 t+10 

没有影响,您不应该以任何方式将列表命名为“list”,因为它是用于不同目的的保留字。

使用
list
作为您自己变量的名称是个坏主意。另请参见分配
.grid
的结果。您正在修改正在迭代的列表。此外,语句
t+10
无效。