在tkinter.messagebox中,后台会出现showinfo和showwarning。

问题描述 投票:0回答:1

我想用以下方法显示一条警告信息和一条信息信息 tkinter.messagebox. 我创建和撤回 root那我就叫 showwarningshowinfo. 根窗口消失了,但做的消息框。它实际上进入了后台,任务栏上没有按钮。访问它的唯一方法是 alt+tab

如果我注释出 root.withdraw() 调用,同时出现根号和信息框。

我到底做错了什么?

代码:我想用tkinter.messagebox显示一个警告信息和一个信息框。

import tkinter as tk
from tkinter.messagebox import showinfo, showwarning

def create_database():
    root = tk.Tk()
    root.withdraw()
    if os.path.exists(create_url()):
        showwarning('Failure', 'You failed!')
    else:
        showinfo('Success!', 'Everything went fine')
    root.destroy()
python tkinter messagebox
1个回答
0
投票

这是因为 Flask 堵塞 tkinter如上所述 此处. 解决的方法是把 tkinter 窗口的不同进程中。这样,问题中的代码就变成了。

from multiprocessing import Process
from tkinter.messagebox import showinfo, showwarning

def show_warning_window():
    root = tk.Tk()
    root.withdraw()
    showwarning('File exists', 'The database file already exists!')
    root.destroy()


def show_info_window():
    root = tk.Tk()
    root.withdraw()
    showinfo('Success!', 'The database was created.')
    root.destroy()


def create_database():
    if os.path.exists(create_url()):
        p = Process(target=show_warning_window)
        p.start()
        p.join()
    else:
        engine = create_engine(create_uri(), echo=True)
        Base.metadata.create_all(engine)
        p = Process(target=show_info_window)
        p.start()
        p.join()

后来的编辑:为了让这个工作正常进行,重要的是服务器不应该在... ... 发展 模式。的 设置_env 变量不应设置为 发展

© www.soinside.com 2019 - 2024. All rights reserved.