我写了一个小的python脚本,只弹出一个包含命令行传递的文本的消息框。我想只在前一次调用的窗口未打开时弹出它。
from Tkinter import *
import tkMessageBox
root = Tk()
root.withdraw()
# TODO not if a window with this title exists
tkMessageBox.showinfo("Key you!", " ".join(sys.argv[1:]))
知道怎么检查吗?
答案 0 :(得分:2)
我相信你想要:
if 'normal' != root.state():
tkMessageBox.showinfo("Key you!", " ".join(sys.argv[1:]))
答案 1 :(得分:0)
之前的答案与您提供的代码相对应。你说这不起作用,因为回答者遵守“soisbêteetcipliné”规则,因为他没有将root.mainloop()
添加到他的代码中,因为你的问题也没有。
通过添加后一行,由于某种原因由事件循环引起,您应该按如下方式测试确切的字符串“withdrawn”:
import tkinter as tk
from tkinter import messagebox
import sys
root = tk.Tk()
root.withdraw()
if 'withdrawn' != root.state():
messagebox.showinfo("Key you!", sys.argv[1:])
root.mainloop()
注意:请勿运行此代码,否则您的终端会话将挂断。为了避免这种不适,你必须使用root.state("normal")
重置窗口状态,这将导致消息框消失,就像点击Ok按钮一样,或者root.iconify()
你可以停止通过右键单击操作系统任务栏上显示的tkinter图标来挂断终端会话。