Aktives Fenster festlegen

Fragen zu Tkinter.
Albatros16
User
Beiträge: 2
Registriert: Sonntag 19. März 2006, 18:50
Wohnort: 1210 Wien

Aktives Fenster festlegen

Beitragvon Albatros16 » Donnerstag 23. März 2006, 20:09

Hallo,
vielleicht kann mir jemand helfen.
Ich habe drei Fenster erzeugt:
Hauptfenster = Tk()
Fenster2 = Toplevel()
Fenster3 = Toplevel()
Wie erreiche ich, dass nach dem Start ein ganz bestimmtes Fenster aktiv ist (ohne dass man das Fenster anklicken muss).
Herzlichen Dank

Edit (Leonidas): Thread in Tkinter-Forum verschoben.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Donnerstag 23. März 2006, 20:34

Hi!

Versuch mal z.B. Fenster2.focus_set().

Gruß, mawe
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

Beitragvon Hannes-Spz » Freitag 24. März 2006, 13:16

servus!

wie wärs denn mal mit mein_widget.focus_force()?
damit wird der focus wort-wörtlich erzwungen...
total praktisch, wenn man etwas machen mag, wo immer ein fenster im
vordergrund stehen soll...
zb:
eine uhr...
immer wenn der wecker abgelaufen ist, soll nicht nur irgendetwas ausgeführt werden,
sondern auch der ganze bildschirm mit dem Tk() ausgefüllt werden (vollbild)
also am ende der funktion einfach root.focus_force() machen und schon ist
dies fenster im vordergrund...
(focus_set finde ich schlecht, weil man doch - glaub ich - ein arg angeben muss!)
my tip: mit Alt+m in der idle "Tkinter" öffnen und nach "def focus_" suchen, wird lustig.

(PS: übrigens bringt es dir GAR nichts, wenn du einfach NUR =Toplevel() hinschreibst...
wenn dann kannst du doch auch =Tk() benutzen oder schreibst =Toplevel(root), das macht mehr sinn :wink:
)

also:
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Freitag 24. März 2006, 19:32

Hannes-Spz hat geschrieben:wenn dann kannst du doch auch =Tk() benutzen

Mehrmals Tk() aufrufen, und Du kommst in Teufels Küche (siehe idle) :)
Hannes-Spz hat geschrieben:oder schreibst =Toplevel(root), das macht mehr sinn

Warum macht das mehr Sinn?
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

Beitragvon Hannes-Spz » Samstag 25. März 2006, 13:59

@mave:
ob es SINN macht, ist sowieso immer eine andere frage :wink:

aber nein:
hast du schonmal das ausprobiert?:

Code: Alles auswählen

from Tkinter import *
l = Label(text = "hallo") # beachte: KEIN master angegeben!!
l.pack()
mainloop()

dann wirst du feststellen, dass du trotzdem ein lustiges fensterchen erhälst, wo drüber
"Tk" steht, und das zeigt mir jedenfalls, dass doch mindestens einmal
...=Tk()
aufgerufen wurde
wenn du in der Tkinter mal alle wege verfolgst, wirst du merken, dass er immer, wenn er
keinen master hat, sich einen neuen erschafft...!

der clou kommt nun:
wenn du die Toplevel() ohne master angibst, erschafft er sich einen neuen
meister/ ein neues Tk()-fenster eigens dafür!

-> zweck verfehlt, da die Toplevel() dann keine "ECHTEN" toplevel von
root wären!!
soll heißen, du kannst root schließen, ohne dass sich die toplevel auch vom acker machen :wink:

probiers aus! (und sag mir bescheid, wenn ich mich irre :D )

ansosnsten:
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Samstag 25. März 2006, 21:56

Hi!

Hannes-Spz hat geschrieben:soll heißen, du kannst root schließen, ohne dass sich die toplevel auch vom acker machen Wink

probiers aus! (und sag mir bescheid, wenn ich mich irre)

Dann darf ich Dir jetzt mitteilen dass Du dich irrst :D
Naja, jedenfalls denke ich das. Bei folgendem Code

Code: Alles auswählen

from Tkinter import *

root = Tk()
root.title("root")
t1 = Toplevel()
t1.title("zwei")
t2 = Toplevel()
t2.title("drei")
mainloop()

kann ich die Toplevel einzeln löschen. Wenn ich das root-Window lösche, sind auch die Toplevel weg. Widerlegt das Deine Theorie? Bin mir nicht sicher, bin schon sehr müde :)

PS: Was ich auch komisch finde: Wenn ich nur dem root einen Titel verpasse haben die Toplevel automatisch den selben Titel.

Gruß, mawe
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

Beitragvon Hannes-Spz » Samstag 25. März 2006, 23:18

nun gut, nun gut... du hast gewonnen, aber auch nur insofern, dass ich meine "THEORIE"
einschränken muss!
durch etliches herum-testen bin ich zu dem schluss gekommen, dass er immer das erste Tk()-fenster als root nimmt, das er finden kann!
ich hab mal was von ner liste gehört, wo alle masterlies hereingespeichert
werden, bin mir aber grad nicht sicher, ob das für hier gilt :roll:

ich werd morgen aber nochmal nachschauen..! *bei-python-referenz-schwör* :D
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder