hallo leute,
ich mal wieder. ich wollte mal fragen, wie ich den fokus festsetze? also folgendes: ich habe ein fenster A. in diesem fenster A habe ich die möglichkeit noch ein fenster B zu öffnen. wenn ich das getan habe, soll man nichts im fenster A machen können, solange bis ich das fenster B wieder geschlossen habe.
focus_set() - setzt nur den fokus, macht ihn aber nicht fest
focus_force() - keine ahnung, aber fest wird er auch nicht
mfg
Fokus
dann ist das nicht nur ein Problem des Fokuses, sondern auch ob das fester disabled ist, oder nicht.
Also mal genauer (da ich wieder mal kein Code hab, beschreib ich nur mal wie das mit Tkinter wäre): wenn du das neue Fenster öffnest gibst du ihm mit fokus_set den Fokus. Dann nimmst du das erste Fenster und machst A["state"]=DISABLED. DISABLED ist eine Konstante aus Tkconstants. Dann kannst du da nichts mehr machen. Dann musst du nur noch, wenn B geschlossen wird ne Funktion rufen lassen die A wieder aktiv macht, also A["state"]=ACTIVE. auch ACTIVE ist so eine Konstante aus Tkconstants. Ich hoff mal, dass das nicht zu theoretisch war und du mir folgen konntest.
Also mal genauer (da ich wieder mal kein Code hab, beschreib ich nur mal wie das mit Tkinter wäre): wenn du das neue Fenster öffnest gibst du ihm mit fokus_set den Fokus. Dann nimmst du das erste Fenster und machst A["state"]=DISABLED. DISABLED ist eine Konstante aus Tkconstants. Dann kannst du da nichts mehr machen. Dann musst du nur noch, wenn B geschlossen wird ne Funktion rufen lassen die A wieder aktiv macht, also A["state"]=ACTIVE. auch ACTIVE ist so eine Konstante aus Tkconstants. Ich hoff mal, dass das nicht zu theoretisch war und du mir folgen konntest.
Code: Alles auswählen
from Tkinter import *
from Tkconstants import *
wm = Tk()
def fenster():
wm["state"]="disabled"
fens = Toplevel()
b2 = Button(fens, text="Fenster zu")
b2.pack()
fens.mainloop()
b1 = Button(wm, text="Fenster auf", command=fenster)
b1.pack()
wm.mainloop()
TclError: unknown option "-state"
wo liegt der fehler?
mfg
hmm... hab das noch nie für Toplevels probiert gehabt, nur für Buttons. mit denen klappts auch, hab an deinem Beispiel mal nen bissel rumgewerkelt und dann gings mit dem Button. Ich hab gedacht das wär für alle Widgets so, da sie ja alle ne gemeinsame Urklasse haben, scheint aber nich so zu sein. Sorry.
hey leute,
ich habe die lösung und will euch daran teil haben lassen:
den entscheiden punkt hier setzt aber wait_window(). mit dieser fkt. sagt man dem fenster, dass es erst verlassen werden kann, wenn man es zerstört. wichtig!
manchmal ist es so einfach
mfg
ich habe die lösung und will euch daran teil haben lassen:
Code: Alles auswählen
wm = Tk()
def fenster():
fens = Toplevel()
b2 = Button(fens, text="Fenster zu",command=fens.destroy)
b2.pack()
fens.grab_set()
fens.focus_set()
fens.wait_window()
fens.mainloop()
b1 = Button(wm, text="Fenster auf", command=fenster)
b1.pack()
wm.mainloop()
manchmal ist es so einfach

mfg
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
Sorry wenn ich mich einmische, obwohl ich (noch) keine Ahnung von TKinter habe. Die Aufgabe war glaube ich, ein modales Fenster zu öffnen. Diese Fenster sind eindeutig nicht modal.
Ich kann die Fenster nach belieben aktivieren (darf dabei nur eben nicht auf den Button Fenster schließen kommen.
Wo gibt's für TKinter eine Onlinedoku (notfalls auch in Neudeutsch)?
Hans
Ich kann die Fenster nach belieben aktivieren (darf dabei nur eben nicht auf den Button Fenster schließen kommen.
Wo gibt's für TKinter eine Onlinedoku (notfalls auch in Neudeutsch)?
Hans
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
OK, die Onlinedoku habe ich gefunden http://www.python.org/doc/current/lib/m ... inter.html. 
was will uns die Doku http://www.pythonware.com/library/tkint ... ethods.htm sagen?Was meinen die mit model? Bisschen knapp geahlten, aber mein Bauch sagt mir, das könnte es sein.
Hans

was will uns die Doku http://www.pythonware.com/library/tkint ... ethods.htm sagen?
Code: Alles auswählen
focusmodel
focusmodel(model), focusmodel(). Set (get) the focus model.
Hans
hallo leute,
ich finde es schon ganz schön anmaßend, was zu kritisieren, wenn ich keine ahnung habe und es noch nicht einmal getestet habe.
ich dachte schon, ich habe schrott ins forum geschrieben. dem ist aber nicht so. ich habe das programm noch mal getestet und es macht genau das, was es soll. ich habe mein hauptfenster. aus diesem heraus kann ich ein toplevelfenster öffnen. wenn dies erscheint, kann man nicht ins hauptfenster zurück, bis man es zerstört.
es passiert also genau das, was ich gesucht habe. und daß das modal ist, darüber brauchen wir glaube ich, nicht zu streiten.
mfg
ich finde es schon ganz schön anmaßend, was zu kritisieren, wenn ich keine ahnung habe und es noch nicht einmal getestet habe.
ich dachte schon, ich habe schrott ins forum geschrieben. dem ist aber nicht so. ich habe das programm noch mal getestet und es macht genau das, was es soll. ich habe mein hauptfenster. aus diesem heraus kann ich ein toplevelfenster öffnen. wenn dies erscheint, kann man nicht ins hauptfenster zurück, bis man es zerstört.
es passiert also genau das, was ich gesucht habe. und daß das modal ist, darüber brauchen wir glaube ich, nicht zu streiten.
mfg
-
- Gründer
- Beiträge: 410
- Registriert: Dienstag 30. Juli 2002, 18:03
- Wohnort: Oestrich-Winkel
- Kontaktdaten:
Ganz ruhig Leute.
Bisher hat hier jeder jedem geholfen, und ich habe hier noch nichts über "schlechtmachen" anderer gelesen.
Doch trotzdem, muss ich die Leute bitten, vorsichtig zu sein, was sie Schreiben, denn im Text kann vieles Missverstanden werden, da die Mimik und Gestik eines persönlichen Gespräches nicht vorhanden ist. Benutzt dann doch mal ein
oder
oder so, das lockert ungemein auf, und man versteht wie was gemeint sein könnte.
Bisher hat hier jeder jedem geholfen, und ich habe hier noch nichts über "schlechtmachen" anderer gelesen.
Doch trotzdem, muss ich die Leute bitten, vorsichtig zu sein, was sie Schreiben, denn im Text kann vieles Missverstanden werden, da die Mimik und Gestik eines persönlichen Gespräches nicht vorhanden ist. Benutzt dann doch mal ein


irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
Hi kosche,
ich fühle mich eigentlich noch genauso als newbie wie du. Also niedermachen, schlechtmachen, abkanzeln, ..... war alles nicht meine Absicht. Wollte eigentlich nur mitteilen, wie es bei mir lief.
Mal einen allgemeinen Hinweis an das ganze Forum: Ich glaube es ist angebracht, dass grundsätzlich ein Hinweis auf das verwendete OS gegben werden sollte. Ich vermute, da gibt es mehr Differenzen in Python, als uns lieb ist.
Also auf meinem LINUX Servverchen habe ich folgen Coode ausgeführt:
Ich kann das Kindfenster aufmachen, aber ich kann auch das Kindfenster verlassen und in das Hauptfenster zurückkehren ohne ds Kindfenster zu schließen siehe Bild.

Das Fenster mit dem Blauen Rahmen hat den Fokus
Hans
ich fühle mich eigentlich noch genauso als newbie wie du. Also niedermachen, schlechtmachen, abkanzeln, ..... war alles nicht meine Absicht. Wollte eigentlich nur mitteilen, wie es bei mir lief.
Mal einen allgemeinen Hinweis an das ganze Forum: Ich glaube es ist angebracht, dass grundsätzlich ein Hinweis auf das verwendete OS gegben werden sollte. Ich vermute, da gibt es mehr Differenzen in Python, als uns lieb ist.
Also auf meinem LINUX Servverchen habe ich folgen Coode ausgeführt:
Code: Alles auswählen
from Tkinter import *
from Tkconstants import *
wm = Tk()
def fenster():
fens = Toplevel()
b2 = Button(fens, text="Fenster zu",command=fens.destroy)
b2.pack()
fens.grab_set()
fens.focus_set()
fens.wait_window()
fens.mainloop()
b1 = Button(wm, text="Fenster auf", command=fenster)
b1.pack()
wm.mainloop()

Das Fenster mit dem Blauen Rahmen hat den Fokus
Hans
daran habe ich auch erst gedacht als, ich schon meinen beitrag geleistet hatte.
ich hatte es unter win98 und unter win nt gebaut. mich würde mal interessieren, ob du viele neue fenster erzeugen konntest, oder ob du nur den fokus darauf lenken konntest?
mfg
p.s. @hans: ich hatte endlich mein problem gelöst und war deshalb ein bisschen angefressen, weil ich eben dachte, du machst die sache schlecht. war wohl ein missverständnis. ich denke piddon hat recht und man sollte öfter mal ein smiley setzen.

ich hatte es unter win98 und unter win nt gebaut. mich würde mal interessieren, ob du viele neue fenster erzeugen konntest, oder ob du nur den fokus darauf lenken konntest?
mfg
p.s. @hans: ich hatte endlich mein problem gelöst und war deshalb ein bisschen angefressen, weil ich eben dachte, du machst die sache schlecht. war wohl ein missverständnis. ich denke piddon hat recht und man sollte öfter mal ein smiley setzen.

-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
Also aufmachen kann ich nur ein Fenster. Also unter Windows sind modale Fenster eigentlich üblich, z. B. bei Fehlerbehandlung. Das sind diese Fenster die nichts anderes zulassen, als das man sie erst schließen muß, bevor es weitergeht. Auch in ein anderes Prog wechseln geht nicht.
P.S. Mag sein das mein Ton vieleicht etwas grantelig war. Aber wenn mir etwas wirklich missfällt, sage ich es eigentlich deutlich (aber hoffentlich trotzdem noch in einer vernünftigen Tonart).
Hans
P.S. Mag sein das mein Ton vieleicht etwas grantelig war. Aber wenn mir etwas wirklich missfällt, sage ich es eigentlich deutlich (aber hoffentlich trotzdem noch in einer vernünftigen Tonart).

Hans