Feste Framegröße mit Text
Verfasst: Dienstag 12. Februar 2019, 13:28
hi
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
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()