Dynamisch verteilte Widgets (Button) je nach Fenstergröße in die nächste Zeile

Fragen zu Tkinter.
Antworten
XxBlueTomatoXx
User
Beiträge: 5
Registriert: Freitag 17. Dezember 2021, 15:30

Moin zusammen zum Start ins Wochenende!

dies ist mein erster Beitrag hier. Ich möchte gerne in einem ttk.Widget Buttons erzeugen die sich dynamisch je nach Breite des Fensters in die nächste Zeile verschieben. Wenn das Fenster also so klein gezogen ist, das der Button in der ersten Zeile 1px abgeschnitten wird, soll er in die nächste Zeile springen ohne sich vorher in Zeile 1 zu verkleinern. Habt ihr da eine bessere Idee als die Breite des Fensters und der Buttons auszulesen und das in einer Schleife für jeden Button abzufragen? Ich hoffe irgendwie das es mit grid oder pack möglich ist.

Ich hoffe ich habe mich verständlich ausgedrückt :?: :?

Wenn einer noch ein Tipp für ein gute Seite hat auf der man diese ttk.Style Geschichte lernen kann wäre ich auch dankbar.

Dies ist mein Code:

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from tkinter.constants import END
from typing import Text     
import tkinter.scrolledtext as st                


root = tk.Tk()                             
root.title("Tool")         
root.geometry("500x500")                     
root.minsize(width=500, height=500)          
root.maxsize(width=2200, height=1200)        
root.configure(background='#1E1E1E')

buttonframe=tk.Frame(root, highlightbackground="#646464", highlightthickness=1, bg='#323232')
buttonframe.pack(side='top', fill="both", padx=5, pady=5, ipadx=5, ipady=5)

style = ttk.Style()
style.theme_use('default')
style.configure('TNotebook.Tab', background="#646464")
style.configure('TNotebook', background="#323232")
style.map("TNotebook", background= [("selected", "#646464")])

tab_control = ttk.Notebook(buttonframe)
rechnerbuttons = ttk.Frame(tab_control)
benutzerbuttons = ttk.Frame(tab_control)
toolbuttons = ttk.Frame(tab_control)
tab_control.add(rechnerbuttons, text='1',)
tab_control.add(benutzerbuttons, text='2')
tab_control.add(toolbuttons, text='3')
tab_control.pack(expand=True, fill='both', padx=5, pady=5)

benutzerbuttonlist= ("1111111111111111111111", "22222222222222222222222", "33333333333333333", "44444444444", "55555555555555555", "6666666666", "7777777777", "88888888888", "999999999999999999999999")
var=0
var2=1
for benutzerbutton in benutzerbuttonlist:
    button = tk.Button(benutzerbuttons, text=benutzerbutton)
    button.grid(row=var2, column=var, padx='5', pady='5', sticky="news")
    if var==10:
        var = 0
        var2 +=1
    else: 
        var += 1

root.mainloop()
Antworten