es geht erstmal nur frame_oben_re, frame_oben_mi und frame_oben_re. Mit .rowconfigure und columnconfigure habe ich schon alles ausprobiert.
Code: Alles auswählen
#region main-Window
class mainWindow:
def __init__(self, root, app, status_var):
self.root = root
self.app = app
self.status_var = status_var
SCREEN_WIDTH = root.winfo_screenwidth()
SCREEN_HEIGTH = root.winfo_screenheight()
WIN_WIDTH = 700
WIN_HEIGTH = 800
WIN_X = (SCREEN_WIDTH - WIN_WIDTH) // 2
WIN_Y = (SCREEN_HEIGTH - WIN_HEIGTH) // 2
root.title("Das Hauptfenster")
root.geometry(f"{WIN_WIDTH}x{WIN_HEIGTH}+{WIN_X}+{WIN_Y}")
root.attributes("-topmost",True)
root.option_add("*font","ARIAL 12")
root.configure(bg="#b5b3b3")
root.iconbitmap("C:/_Py-Dev/Bilder/mysql2.ico")
pad = {"padx": 110, "pady": 10}
# Konfiguriere das grid-Layout
root.rowconfigure(0, weight=0) # oben
root.rowconfigure(1, weight=0) # mitte
root.rowconfigure(2, weight=0) # unten
root.columnconfigure(0, weight=0) #Zeile 0 spannt sich über volle Breite, weight=0 nimmt keinen zusätzlichen Platz ein
root.columnconfigure(1, weight=1) #Zeile 1 spannt sich über volle Breite
root.columnconfigure(2, weight=0) #Zeile 2 spannt sich über volle Breite
frame_oben_li = tk.Frame(root, bg="lightblue")
frame_oben_li.grid(row=0, column=0, sticky="nswe")
#frame_oben.grid_propagate(True)
frame_oben_mi = tk.Frame(root, bg="#ffbad9")
frame_oben_mi.grid(row=0, column=1, sticky="nswe")
#frame_oben.grid_propagate(True)
frame_oben_re = tk.Frame(root, bg="lightgreen")
frame_oben_re.grid(row=0, column=2, sticky="nswe")
frame_mitte = tk.Frame(root, bg="lightyellow")
frame_mitte.grid(row=1, column=0, columnspan=3,sticky="nswe")
frame_unten = tk.Frame(root, bg="lightblue")
frame_unten.grid(row=2, column=0, columnspan=3, sticky="nswe")
# Überschrift
lb_ueberschrift = ttk.Label(frame_oben_li, background="#4ec9b0" , font= "Arial 9", text="Bitte Daten zur Anmeldung bei mySQL eingeben")
lb_ueberschrift.grid(column=0, row=0, padx=0, pady=10, sticky="")
########## Überschrift label oben links ###############
lb_mitte = ttk.Label(frame_oben_re, font= "Arial 8", text="Datenbank mit Doppelklick wählen")
lb_mitte.grid(column=1, row=1, padx=0, pady=10, sticky="")
# Host
ttk.Label(frame_oben_li, text="Host:").grid(column=0, row=1, sticky="sw",pady=10, padx=60)
self.host_var = tk.StringVar(value="localhost")
ttk.Entry(frame_oben_li, textvariable=self.host_var, width=20).grid(column=0, row=1, sticky="",**pad)
# Username
ttk.Label(frame_oben_li, text="Username:").grid(column=0, row=2, sticky="w", pady=60, padx=20)
self.user_var = tk.StringVar(value="root")
ttk.Entry(frame_oben_li, textvariable=self.user_var, width=20).grid(column=0, row=2, sticky="",**pad)
# Password
ttk.Label(frame_oben_li, text="Password:").grid(column=0, row=3, sticky="w", pady=10,padx=22)
self.password_var = tk.StringVar()
ttk.Entry(frame_oben_li, textvariable=self.password_var, show="*", width=20).grid(column=0, row=3, sticky="",**pad)
host = self.host_var.get().strip()
username = self.user_var.get().strip()
password = self.password_var.get()
# Buttons
ttk.Button(frame_oben_li, text="Connect", command=self.on_connect).grid(column=0, row=5, padx=(100,0), sticky="")
ttk.Button(frame_oben_li, text="Quit", command=root.destroy).grid(column=0, row=5, padx=(0,100), sticky="")
########### Status Label #########
# Status label
self.status_label = ttk.Label(frame_mitte, text="warte auf verbindung", foreground="#9f0263", font="ARIAL 10 bold",anchor="w")
self.status_label.grid(column=0, row=0, sticky="", pady=10) #, padx=120)
######### Datenbank Listbox ###########
self.var_all = tk.BooleanVar()
self.checkbox_all = tk.Checkbutton(frame_oben_re, text="Auch Systemdatenbanken anzeigen", font="ARIAL 8",variable=self.var_all,) #command=update_list)
self.checkbox_all.grid(row=2, column=1, ipadx=0, ipady=0,sticky="NW",padx=(50,0), pady=0)
self.dbOrdner_inhalt= []
self.dbOrdner_scrollbar = tk.Scrollbar(frame_oben_re, orient="vertical")
self.dbOrdner_scrollbar.grid(row=3, column=1, ipady=32, sticky="NW") #, padx=(290,0), pady=32)
self.dbOrdner_listbox = tk.Listbox(frame_oben_re, height=6)
self.dbOrdner_listbox.grid(row=3, column=1, ipadx=30, sticky="NW")#,padx=(50,0), pady=(30,0))
self.bOrdner_var = tk.Variable(frame_mitte, value=self.dbOrdner_inhalt)
self.dbOrdner_scrollbar.config(command=self.dbOrdner_listbox.yview)
for item in self.dbOrdner_inhalt: self.dbOrdner_listbox.insert("end", item)
#self.dbOrdner_listbox.bind("<Double-1>",lambda e: print(self.dbOrdner_listbox.get(self.dbOrdner_listbox.curselection())))
self.selected_value = None
self.dbOrdner_listbox.bind("<Double-1>", lambda e: self.fetch_table_from_selection())
########### neue Datenbank anlegen ##########################
db_btn=ttk.Button(frame_oben_re, text="neue Datenbank anlegen", command=lambda:self.app.dbneu(host, username, password,self.dbname_var.get(),status_callback=self.update_status))
db_btn.grid(column=1, row=1,sticky="n",padx=80, pady=30)
self.dbname_var = tk.StringVar()
ttk.Entry(frame_oben_re,textvariable=self.dbname_var, width=20).grid(column=1, row=1,sticky="n", padx=0,pady=70)
dbname = self.dbname_var.get().strip()