ich versuche, trotz unterschiedlicher Textlängen (für mastertext und slavetext), beide Frames genau in der Mitte zu behalten.
Nur wenn beide Texte gleich lang sind, passt es
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter as tk
# Hier kann man den Text ändern... :)
master_text = "Guten Morgen, wie gehts?"
slave_text = "Hallo!"
class StartPage(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.parent = parent
self.parent.state('zoomed')
self.parent.overrideredirect(True)
self.parent.resizable(False, False)
self.parent.bind('<Map>', self.check_map)
self.parent.bind('<Unmap>', self.check_map)
# MIDDLE
self.middle = tk.Frame(self.parent, bg="red")
self.middle.pack(expand=True, fill=tk.BOTH)
self.start_MIDDLE()
# FOOTER
self.footer = tk.Frame(self.parent, height=50, bg='grey')
self.footer.pack_propagate(False)
self.footer.pack(side=tk.BOTTOM, fill=tk.X)
self.start_FOOTER()
def start_MIDDLE(self):
# FRAME: SIDEBAR - MIDDLE
sidebar = tk.Frame(self.middle, width=28, bg="green")
sidebar.pack(side=tk.LEFT, fill=tk.Y)
# FRAME: TREEVIEW-BOTH - MIDDLE
frame_all = tk.Frame(self.middle, bg="yellow")
frame_all.pack(fill=tk.BOTH, expand=True, padx=20, pady=20)
# FRAME: TABLE 1 - MIDDLE
frame_total = tk.Frame(frame_all, bg="blue")
frame_total.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=10, pady=10)
# FRAME: TABLE 2 - MIDDLE
frame_fine = tk.Frame(frame_all, bg="green")
frame_fine.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=10, pady=10)
# MATERTREE-Frame
self.frame_mastertree = tk.Frame(frame_total, bg="pink")
self.frame_mastertree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=5, pady=5)
self.start_MASTERTREE()
# SLAVETREE-Frame
self.frame_slavetree = tk.Frame(frame_fine, bg="pink")
self.frame_slavetree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=5, pady=5)
self.start_SLAVETREE()
def start_MASTERTREE(self):
border_master_text = tk.Frame(self.frame_mastertree)
border_master_text.pack(side=tk.TOP, fill=tk.X)
lb_master_var = tk.StringVar()
label_mastertree = tk.Label(border_master_text, textvariable=lb_master_var, font=('Arial', 9, 'bold'), bg="darkgrey", relief=tk.FLAT, anchor=tk.W)
label_mastertree.pack(fill=tk.X)
border_master_tree = tk.Frame(self.frame_mastertree, bg="yellow")
border_master_tree.pack(side=tk.TOP, fill=tk.BOTH)
lb_master_var.set(master_text)
def start_SLAVETREE(self):
border_slave_text = tk.Frame(self.frame_slavetree)
border_slave_text.pack(side=tk.TOP, fill=tk.X)
lb_slave_var = tk.StringVar()
label_slavetree = tk.Label(border_slave_text, textvariable=lb_slave_var, font=('Arial', 9, 'bold'), bg="darkgrey", relief=tk.FLAT,anchor=tk.W)
label_slavetree.pack(fill=tk.X)
border_slave_tree = tk.Frame(self.frame_slavetree, bg="yellow")
border_slave_tree.pack(side=tk.TOP, fill=tk.BOTH)
lb_slave_var.set(slave_text)
def start_FOOTER(self):
# FINISH BUTTONS - MIDDLE
finish_buttons = tk.Frame(self.middle, bg="pink")
finish_buttons.pack(side=tk.BOTTOM, fill=tk.BOTH, padx=20, pady=5)
tk.Button(finish_buttons, text='Close', width=15, command=self.parent.quit).pack(pady=5)
def move_parent(self, event):
self.parent.geometry('+{0}+{1}'.format(event.x_root, event.y_root))
def check_map(self, event):
if str(event) == "<Map event>":
self.parent.overrideredirect(1)
self.parent.state('zoomed')
def exitProgram(self, _):
self.parent.quit()
def main():
root = tk.Tk()
StartPage(root)
root.mainloop()
if __name__ == '__main__':
main()