Python:tkinter askyesno方法打开一个空窗口

alw*_*btc 1 python user-interface dialog tkinter

我使用它从用户获得是/否但它打开一个空窗口:

from Tkinter import *
from tkMessageBox import *
if askyesno('Verify', 'Really quit?'):
    print "ok"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

而这个空窗口不会消失.我怎么能阻止这个?

这不起作用:

    Tk().withdraw()
    showinfo('OK', 'Select month')
    print "line 677"
    root = Tk()
    root.title("Report month")
    months = ["Jan","Feb","Mar"]
    sel_list = []
    print "line 682"

    def get_sel():
        sel_list.append(Lb1.curselection())
        root.destroy()

    def cancel():
        root.destroy()

    B = Button(root, text ="OK", command = get_sel)
    C = Button(root, text ="Cancel", command = cancel)
    Lb1 = Listbox(root, selectmode=SINGLE)

    for i,j in enumerate(months):
        Lb1.insert(i,j)


    Lb1.pack()
    B.pack()
    C.pack()
    print "line 702"
    root.mainloop()

    for i in sel_list[0]:
        print months[int(i)]
    return months[int(sel_list[0][0])] 
Run Code Online (Sandbox Code Playgroud)

Bry*_*ley 6

在创建任何其他窗口小部件,窗口或对话框之前,Tkinter要求存在根窗口.如果在创建根窗口之前尝试创建对话框,tkinter将自动为您创建根窗口.

解决方案是显式创建根窗口,如果您不希望它可见,则撤销它.

您应该始终只创建一个实例Tk,并且您的程序应该设计为在该窗口被销毁时退出.