7

I’ve writen a little python script that just pops up a message box containing the text passed on the command line. I want to pop it up only when the window —resulting from a previous call— is not open.

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:]))

Any idea how to check that?

4

2 回答 2

2

我相信你想要:

if 'normal' != root.state():
    tkMessageBox.showinfo("Key you!", " ".join(sys.argv[1:]))
于 2008-09-05T16:19:35.063 回答
0

先前的答案根据您提供的代码起作用。你说它不起作用,因为回答者遵守“sois bête et discipliné”规则,因为他没有添加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")这将导致消息框消失,就像单击“确定”按钮一样,或者root.iconify()您可以通过右键单击来停止终端会话挂断出现在操作系统任务栏上的 tkinter 图标。

于 2017-11-19T08:21:49.433 回答