Предыдущий ответ работает в соответствии с кодом, которую вы предоставили. Вы говорите, что это не сработало, потому что отвечающий соблюдает правило «sois bête et studentliné» в том, что он не добавил root.mainloop()
к своему коду, так как ваш вопрос тоже не является.
Добавляя позднюю линию, по какой-то причине, вызванной циклом обработки событий, вы должны проверить точную строку «отменила» следующим образом:
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, появляющийся на панели задач ОС.
Я пробовал это, он не работает, новое окно открывается в любом случае. Возможно, я не был достаточно ясен: одновременно работают два переводчика python. Я хочу, чтобы второй процесс вышел, когда другой работает, то есть когда окно или любое окно с этим заголовком уже открыто. – Tibi 2008-10-13 12:01:58