繁体   English   中英

列表长度超过一定数量后如何自动关闭tkinter窗口?

[英]How to automatically close tkinter window after list length exceeds certain number?

当窗口打开时,我不断将元素添加到我的列表中。 当我的列表长度超过一定数量时,我想自动关闭 tkinter 窗口,我在互联网上找不到任何好的答案。

来自如何关闭 tkinter 窗口的答案 大多数情况下使用按钮关闭 tkinter 窗口,这不是我想要的方式。

我试过这段代码,但它不起作用

root = Tk()
#Some code....

#function to be called when mouse is clicked
def insertcoords(event):
    #outputting x and y coords to console
    coord.append([event.x, event.y])

#mouseclick event
canvas.bind("<Button 1>",insertcoords)

if len(coord) > 4 : #coord is my list
    root.destroy()
root.mainloop() 

你必须把

if len(coord) > 4 :
    root.destroy()

在您的insertcoords()函数中。 检查以下示例:

from tkinter import *

root = Tk()

added_elements = []

def CheckLength():
    listbox.insert(END, entry_value.get())
    added_elements.append(entry_value.get())
    if len(added_elements) > 4:
        root.destroy()

entry_value = StringVar()
entry = Entry(root, textvariable=entry_value)
entry.grid(row=0, column=0)

button = Button(root, text="Add", command=CheckLength)
button.grid(row=0, column=1)

listbox = Listbox(root)
listbox.grid(row=1, column=0, columnspan=2)

root.mainloop()

这是您的代码的更新版本:

from tkinter import *

root = Tk()

coord = []

def insertcoords(event):
    coord.append([event.x, event.y])
    print(event.x, event.y)
    if len(coord) > 4:
        root.destroy()

canvas = Canvas(root)
canvas.grid(row=0, column=0)
canvas.bind("<Button 1>", insertcoords)

root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM