ich habe nun eine etwas aufwändigere GUI zu bauen und hatte dabei Schwierigkeiten mit den Geometriemanagern.
Wann und wie lassen sich die beiden mischen? Ich habe im Netz natürlich darüber gelesen und überwiegend war die Rede sie nicht zu mischen - manche sagen aber, dass dies problemlos möglich ist. Meine ersten Gehversuche waren erst mal erfolgreich (siehe Beispiel unten). Das umfangreichere Beispiel versagte dann. Wann also lassen sich die Manager mischen? Wisst ihr dazu irgendeine Quelle, die das genau beschreibt?
Das nachfolgende, einfache Beispiel funktioniert
Code: Alles auswählen
import logging
Logger = logging.getLogger("root")
class Page(tk.Frame):
def __init__(self, master, **kwargs):
tk.Frame.__init__(self, master, **kwargs)
self.headline = ""
self.toppackframe = tk.Frame(self)
self.toppackframe.pack(side=tk.TOP)
self.contentgrid = tk.Frame(self)
self.pack()
self.bottompackframe = tk.Frame(self)
self.bottompackframe.pack(side=tk.BOTTOM)
Logger.debug("init done")
def setup_header(self, headline=""):
Logger.debug("setup_header startet [headline=%s]", headline)
if headline:
self.headline = headline
tk.Label(self.toppackframe,
text=self.headline).pack(side=tk.TOP)
Logger.debug("setup_header fertig")
def setup_bottom(self):
Logger.debug("setup_bottom startet")
self.back = tk.Button(self.bottompackframe,
text="<< Back")
self.cancel = tk.Button(self.bottompackframe,
text="Cancel")
self.forward = tk.Button(self.bottompackframe,
text="Next >>")
self.back.pack(side=tk.RIGHT)
self.cancel.pack(side=tk.RIGHT)
self.forward.pack(side=tk.RIGHT)
Logger.debug("setup_header fertig")
def setup(self, headline=""):
Logger.debug("setup startet [headline=%s]", headline)
self.setup_header(headline)
self.setup_bottom()
Logger.debug("setup_header fetig")
class MyPage(Page):
def __init__(self, master, **kwargs):
Page.__init__(self, master, **kwargs)
def setup_content(self, sectionheader=""):
Logger.debug("setup_content [sectionheader=%s]",
sectionheader)
if sectionheader:
Logger.debug("fuege Headerlabel ein")
lbl = tk.Label(self.contentgrid, text=sectionheader)
lbl.grid(column=0, row=0, columnspan=10)
zeilen = range(10)
spalten = range(10)
for zeile in zeilen:
for spalte in spalten:
zelle = "Zelle (%s,%s)" % (spalte, zeile)
l = tk.Label(self.contentgrid, text=zelle)
l.grid(column=spalte, row=zeile+1)
Logger.debug("%s eingefuegt", zelle)
Logger.debug("setup_content fertig")
def setup(self, headline="", sectionheader=""):
Logger.debug("setup startet [headline=%s, sectionheader=%s]",
headline, sectionheader)
self.setup_header(headline)
self.setup_content(sectionheader)
self.setup_bottom()
Logger.debug("setup fertig")
def example():
Logger.debug(" ######### START ##############")
app=tk.Tk()
page = MyPage(app)
page.setup("Titel", "Sektion")
page.pack()
app.mainloop()
if __name__ == "__main__":
logging.basicConfig(format="[%(lineno)4d:%(name)s:%(funcName)s]" + \
" %(message)s", level=10)
example()