Jak poznać, czy okno z danym tytule jest już otwarty w Tk?

głosy
7

Mam napisany trochę skrypt Pythona, który właśnie wyskakuje okno komunikatu zawierającego tekst przekazany w wierszu poleceń. Chcę go tylko pop, gdy okno -resulting z poprzedniego sygnału wywołań nie jest otwarty.

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

Każdy pomysł, jak sprawdzić, że?

Utwórz 05/09/2008 o 12:07
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
2

Wierzę, że chcesz:

if 'normal' != root.state():
    tkMessageBox.showinfo("Key you!", " ".join(sys.argv[1:]))
Odpowiedział 05/09/2008 o 17:19
źródło użytkownik

głosy
0

Poprzednia odpowiedź działa odpowiednio do kodu podałeś. Mówisz, że to nie działa, ponieważ odpowiadającego spełnia „sois bête i dyscypliny” reguły w tym, że nie dodać root.mainloop()do swojego kodu, ponieważ Twoje pytanie nie ma albo.

Dodając późniejszą linię, z jakiegoś powodu spowodowane przez pętlę zdarzeń, należy sprawdzić dokładnie ciąg „wycofane” w następujący sposób:

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()

Uwaga: nie należy uruchomić ten kod inaczej sesja Terminal będzie rozłączyć. Aby obejść ten dyskomfort, trzeba będzie przywrócić stan okna przy użyciu albo root.state("normal")co doprowadzi do skrzynki wiadomości znikają jakby kliknięcie przycisku Ok miejsce, lub root.iconify()przez które można zatrzymać sesji terminala do powieszenia się klikając prawym przyciskiem myszy na ikona tkinter pojawiające się na pasku zadań systemu operacyjnego.

Odpowiedział 19/11/2017 o 08:21
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more