tkinter-mainloop()已冻结

xxb16uws  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(143)

我使用tkinter从用户那里获取实时输入。根据是/否,将要求用户从日期选择器中选择日期。一旦选择了日期,程序将把日期分配给全局变量todays\u date,yesterdays\u date。
这里的问题是它没有进一步移动到下一行代码“print('final status')”。你能告诉我我错过了什么吗?
代码如下:

import tkinter as tk
from tkcalendar import Calendar
from datetime import datetime, timedelta
def invoke_date(Var1,root):
    root.withdraw()
    root.quit()
    global todays_date, yesterdays_date
    if Var1.get() == 2:
        def cal_done():
            top.withdraw()
            root_date.quit()
        root_date = tk.Tk()
        root_date.withdraw()
        top = tk.Toplevel(root_date)    
        cal = Calendar(top, font="Arial 14", selectmode='day', cursor="hand1")
        cal.pack(fill="both", expand=True)
        tk.Button(top, text="OK", command=cal_done).pack()
        root_date.mainloop()
        todays_date = cal.selection_get()
        yesterdays_date = todays_date - timedelta(days = 1)
    else:        
        todays_date = datetime.now()
        yesterdays_date = datetime.now() - timedelta(days = 1)

root = tk.Tk()
root.title("Report Dialog Box")
tk.Label(root, text="Do you want to run the report for today's date?:",justify = tk.LEFT,padx = 20).pack()
Var1 = tk.IntVar()
tk.Radiobutton(root, text = "Yes", padx = 20,variable = Var1,value = 1).pack(anchor=tk.W)
tk.Radiobutton(root, text = "No", padx = 20,variable = Var1,value = 2).pack(anchor=tk.W)
tk.Button(root, text = "Submit", command = lambda: invoke_date(Var1,root)).pack()    
root.mainloop()

print('final status')

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题