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.
Aktives Fenster festlegen
- Hannes-Spz
- User
- Beiträge: 123
- Registriert: Sonntag 7. August 2005, 22:42
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
)
also:
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

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]
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Mehrmals Tk() aufrufen, und Du kommst in Teufels Küche (siehe idle)Hannes-Spz hat geschrieben:wenn dann kannst du doch auch =Tk() benutzen

Warum macht das mehr Sinn?Hannes-Spz hat geschrieben:oder schreibst =Toplevel(root), das macht mehr sinn
- Hannes-Spz
- User
- Beiträge: 123
- Registriert: Sonntag 7. August 2005, 22:42
@mave:
ob es SINN macht, ist sowieso immer eine andere frage
aber nein:
hast du schonmal das ausprobiert?:
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
probiers aus! (und sag mir bescheid, wenn ich mich irre
)
ansosnsten:
ob es SINN macht, ist sowieso immer eine andere frage

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

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

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]
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!

Naja, jedenfalls denke ich das. Bei folgendem Code
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
Dann darf ich Dir jetzt mitteilen dass Du dich irrstHannes-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)

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

PS: Was ich auch komisch finde: Wenn ich nur dem root einen Titel verpasse haben die Toplevel automatisch den selben Titel.
Gruß, mawe
- Hannes-Spz
- User
- Beiträge: 123
- Registriert: Sonntag 7. August 2005, 22:42
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
ich werd morgen aber nochmal nachschauen..! *bei-python-referenz-schwör*
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

ich werd morgen aber nochmal nachschauen..! *bei-python-referenz-schwör*

[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]