TopLevel in Canvas darstellen

Fragen zu Tkinter.
Antworten
Wendigo
User
Beiträge: 7
Registriert: Montag 2. August 2010, 08:09

Hallo Community,
ich habe mal ein bischen mit dem Canvas-Widget von Tkinter herumgespielt und frage mich gerade ob es auch möglich ist ein Toplevel-Widget im Canvas unterzubringen um so etwas wie einen Gui-Designer mit Tkinter zu schreiben.
Bekomme bei folgendem Programm...

Code: Alles auswählen

import Tkinter
root = Tkinter.Tk()
canvas = Tkinter.Canvas(root)
canvas.grid(row=0,column=0)
mdichild = Tkinter.Toplevel(canvas)
mdiparent = canvas.create_window(0,0,window=mdichild)
root.mainloop()
... diese Fehlermeldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\mmeike\Eigene Dateien\Python_Projekte\Komodo_Projects\Tests\mdi.py", line 11, in <module>
mdiparent = canvas.create_window(0,0,window=mdichild)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2174, in create_window
return self._create('window', args, kw)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2147, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: can't use .11266528.11699944 in a window item of this canvas
Mit anderen Widgets funktionierts super.

Mir schwant irgendwie, dass man ".11266528.11699944" in der Fehlermeldung durch "Toplevel" ersetzen kann bzw. das Widget nicht unterstützt wird? :K
Wäre wahrscheinlich auch zu einfach. ^^
BlackJack

@Wendigo: Toplevel sagt's ja eigentlich schon -- man kann etwas was für die "oberste Ebene" gedacht ist, nicht in Widgets eine "Ebene" tiefer stecken.

Wenn Du einen Designer schreiben möchtest, könntest Du Dir ein Widget schreiben, dass ein Fenster auf der Ebene eines Fenstermanagers "emuliert".
Wendigo
User
Beiträge: 7
Registriert: Montag 2. August 2010, 08:09

Habs mir schon gedacht. ^^
Thx für den Tipp. :)
Antworten