Hvordan vite om et vindu med en gitt tittel er allerede åpent i Tk?

stemmer
7

Jeg har skriftlig en liten python skript som bare dukker opp en meldingsboks som inneholder teksten gått på kommandolinjen. Jeg ønsker å dukke opp bare når vinduet -resulting fra en tidligere call-er ikke åpen.

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

Noen anelse om hvordan å sjekke det?

Publisert på 05/09/2008 klokken 11:07
kilden bruker
På andre språk...                            


2 svar

stemmer
2

Jeg tror du vil:

if 'normal' != root.state():
    tkMessageBox.showinfo("Key you!", " ".join(sys.argv[1:]))
Svarte 05/09/2008 kl. 16:19
kilden bruker

stemmer
0

Den forrige svaret fungerer i henhold til koden du har oppgitt. Du sier det ikke fungerer fordi svarerholder "sois bête et disiplin" regel i at han ikke legger root.mainloop()til sin kode siden spørsmålet ditt ikke heller.

Ved å legge den senere linjen, for noen grunn forårsaket av hendelsen loop, bør du teste den nøyaktige strengen "trukket" som følger:

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

Merk: ikke kjøre denne koden ellers Terminal økten vil henge opp. For å omgå dette ubehaget, må du nullstille vindu tilstand ved hjelp av enten root.state("normal")som vil føre til meldingsboksen for å forsvinne som om et klikk på OK-knappen skjedd, eller root.iconify()som du kan stoppe Terminal økt for å henge opp ved å høyreklikke på den tkinter ikonet vises på OS oppgavelinjen.

Svarte 19/11/2017 kl. 08:21
kilden bruker

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