tk.Scrollbar Positionierung/Höhe
Verfasst: Mittwoch 29. April 2015, 10:18
Hallo,
ich krieg einfach nicht raus wo der Fehler liegt, die scrollbar sollte über die gesamte canvas-Höhe (grüne Fläche) gehen was sie aber leider nicht tut.
Zeile 22 canvas, Zeile 30 scrollbar.
Was mach ich hier falsch?
Oder kennt jemand schon ein Modul was mir xml in derart in gui umsetzt?
Grüße
ich krieg einfach nicht raus wo der Fehler liegt, die scrollbar sollte über die gesamte canvas-Höhe (grüne Fläche) gehen was sie aber leider nicht tut.
Zeile 22 canvas, Zeile 30 scrollbar.
Code: Alles auswählen
import tkinter as tk
import xml.etree.ElementTree as ET
class codegui(tk.Tk):
xmltree = None
xmlroot = None
mframe = None
canvas = None
vscrollbar = None
def __init__(self, parent=None):
tk.Tk.__init__(self, parent)
self.parent = parent
def test(self):
self.xmltree = ET.parse("test.xml")
self.xmlroot = self.xmltree.getroot()
opt = {'background':'green'}
self.canvas = tk.Canvas(None, opt)
self.canvas.pack(anchor=tk.W, fill=tk.X)
opt = {'background':'yellow', 'relief':tk.RAISED, 'borderwidth':'10'}
self.mframe = tk.Frame(self.canvas, opt)
self.mframe.pack(anchor=tk.W)
opt = {'background':'blue'}
self.vscrollbar = tk.Scrollbar(self.canvas, opt)
self.vscrollbar.pack(anchor=tk.E, fill=tk.Y)
self.xmlToGui(self.xmlroot)
def dump(self):
for e in self.slaves():
print(type(e), e)
def xmlToGui(self, r):
pframes = []
pframes.append(self.mframe)
for event, node in ET.iterparse("test.xml", events=('start', 'end')):
if event == 'start':
pframes.append(self.xmlFrame(node, pframes[-1]))
if event == 'end':
pframes.pop()
def xmlFrame(self, e, p=None):
opt = {'background':'red', 'relief':tk.RAISED, 'borderwidth':'5'}
f = tk.Frame(p, opt)
f.pack(anchor=tk.W)
e = tk.Label(f, text=e)
e.pack(anchor=tk.W)
return f
gui = codegui()
gui.test()
#gui.dump()
gui.mainloop()
Oder kennt jemand schon ein Modul was mir xml in derart in gui umsetzt?
Grüße