ich habe zwei treeviews, die jeweils in einem einzelframe sind. beide treeview-frames sind in einem gesamt-frame enthalten.
treeview 1 = mastertree(frame, ...)
treeview 2 = slavetree(frame, ...)
mastertree ist immer gesetzt. durch umschalten kann man nun entweder den einen slavetree oder einen anderen schalten.
da die beiden slavetrees unterschiedlich viele columns besitzen, wird dementsprechend die breite des slavetree-frames verändert.
ich versuche nun, das zu verhindert, indem ich beiden frames (self.frame_full und self.frame_fine) versuche mitzuteilen, daß sie unverändert mittig nebeneinander sitzen sollen.
leider ohne erfolg
code snippet:
Code: Alles auswählen
# GESAMT-Frame
self.frame_all = tk.Frame(self.middle, bg="yellow") # <----------- gesamtframe für beide
self.frame_all.pack(fill=tk.BOTH, expand=True, padx=20, pady=20)
# MASTERTREE-Frame
frame_full = tk.Frame(self.frame_all, bg="blue") #<----------- master-einzelframe (immer gesetzt)
frame_full.pack(side=self.frames_var.get(), fill=tk.BOTH, expand=True, padx=10, pady=10)
# SLAVETREE-Frame (entweder für slavetree 1 oder 2)
frame_fine = tk.Frame(self.frame_all, bg="green") #<----------- slave-einzelfenster
frame_fine.pack(side=self.frames_var.get(), fill=tk.BOTH, expand=True, padx=10, pady=10)
style_master = ttk.Style()
style_master.configure("firststyle.Treeview.Heading", font=('Arial', 9, 'bold', 'underline'))
style_master.layout("firststyle.Treeview", [('firststyle.Treeview.treearea', {'sticky': 'nswe'})])
self.mastertree = ttk.Treeview(frame_full, style="firststyle.Treeview")
self.mastertree.heading('#0', text='GESAMTANSICHT:', anchor=tk.W)
self.mastertree.pack(side=self.frames_var.get(), fill=tk.BOTH, expand=True, padx=5, pady=5)
self.mastertree.bind('<ButtonRelease-1>', self.select_item_FIRST)
if self.tables_var.get() == 0:
lb_fine = tk.Label(frame_fine, text="Teilansicht - Knotenstruktur", font=('Arial', 11, 'bold'), bg="darkgrey", relief=tk.FLAT, anchor=tk.W)
lb_fine.pack(side=tk.TOP, fill=tk.X)
style_slave = ttk.Style()
style_slave.configure("secondstyle.Treeview.Heading", font=('Arial', 11, 'bold', 'underline'))
style_slave.layout("secondstyle.Treeview", [('secondstyle.Treeview.treearea', {'sticky': 'nswe'})])
self.slavetree = ttk.Treeview(frame_fine, style="secondstyle.Treeview")
# self.slavetree.bind('<ButtonRelease-1>', self.select_item_LAST)
self.slavetree.pack(side=self.frames_var.get(), fill=tk.BOTH, expand=True, padx=5, pady=5)
else:
lb_fine = tk.Label(frame_fine, text="Teilansicht - Tabellenstruktur 1", font=('Arial', 11, 'bold'), bg="darkgrey", relief=tk.FLAT, anchor=tk.W)
lb_fine.pack(side=tk.TOP, fill=tk.X)
style_slave = ttk.Style()
style_slave.configure("secondstyle.Treeview.Heading", font=('Arial', 9, 'bold', 'underline'))
style_slave.layout("secondstyle.Treeview", [('secondstyle.Treeview.treearea', {'sticky': 'nswe'})])
self.header_fine = ['Strukturebene 1', 'Strukturebene 2', 'Strukturebene 3', 'Strukturebene 4', 'Strukturebene 5', 'Strukturebene 6']
self.slavetree = ttk.Treeview(frame_fine, columns=self.header_fine, show="headings", style="secondstyle.Treeview")
# self.slavetree.bind('<ButtonRelease-1>', self.select_item_LAST)
self.slavetree.pack(side=self.frames_var.get(), fill=tk.BOTH, expand=True, padx=5, pady=5)
for col in self.header_fine:
self.slavetree.heading(col, text=col.title())
self.slavetree.column(col, width=tkFont.nametofont("TkDefaultFont").metrics()['linespace']*2+10)