python - showinfo 和 showwarning 出现在 tkinter.messagebox 的背景中
问题描述
我想使用显示警告消息和信息消息tkinter.messagebox
。我创建和撤销root
,然后调用showwarning
and showinfo
。根窗口消失,但消息框消失。它实际上进入了后台,任务栏上没有按钮。访问它的唯一方法是alt+tab
如果我注释掉root.withdraw()
调用,根目录和消息框都会出现。
我究竟做错了什么?
代码:
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()
稍后编辑:为此,服务器不应处于开发模式很重要。set_env变量不应设置为开发
推荐阅读
- c# - Microsoft Tsql Scriptdom 中的哪个 API 将允许我从 SQL 脚本中检索/存储所有表引用?
- python - FileNotFoundError: [Errno 2] No such file or directory error with numpy
- pip - 使用 pip 安装 spaCy 失败,并出现错误“为 blis 构建轮子失败”
- mysql - 识别两个表之间的缺失行
- dynamics-crm - 在 Microsoft Dynamics 365 中显示外部申请表
- xamarin - 创建 xamarin 进程永无止境
- python - 循环遍历具有两个匹配项的列表时如何随机选择结果
- git - Git 日志缺少最新提交
- r - R将字符串“Jan\n1990”转换为日期格式
- sql - 查找仅包含纯素产品的所有食谱