我想用以下方法显示一条警告信息和一条信息信息 tkinter.messagebox
. 我创建和撤回 root
那我就叫 showwarning
和 showinfo
. 根窗口消失了,但做的消息框。它实际上进入了后台,任务栏上没有按钮。访问它的唯一方法是 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()
这是因为 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 变量不应设置为 发展