Dies ist mein erstes Python Projekt, an dem ich versuche programmieren zu lernen. Ich bitte um Nachsicht.
da verständlicherweise auf meinen ersten ansatzlosen Beitrag (viewtopic.php?f=18&t=53669) keine Rückmeldung kam, versuche ich es jetzt noch einmal, diesmal mit einem konkreten Problem. Und zwar möchte ich je nach Fensterbreite die Variable maxbuttons anpassen, ich schaffe es sogar diese in einem Label anzuzeigen, jedoch scheitere ich daran diese in der Funktion buttonserzeugen(rechnerbuttonlist, rechnerbuttons, maxbuttons, 15) aufzurufen, deshalb ist dort vorerst eine 8 eingetragen. Ich habe es schon in buttonresize(e) mit return maxbuttons versucht, ebenso die Variable als global zu deklarieren, hat nicht geholfen. Ich habe die Vermutung das es irgendwie mit diesem (e) zusammenhängt, da ich nicht verstehe, wofür dieses genau gut ist.
Ich hoffe ihr könnt mir helfen, bis zum 17 muss ich zumindest die GUI meines Programmes in meiner Gruppe präsentieren und dann wird sich entweder für Python oder C++ entschieden. Diese funktioniert auch schon wunderbar, bis auf die Anpassung der Buttons je nach Fensterbreite. Wir schreiben als Systemintegratoren ein Support Tool für Client-Administratoren um, das vorher in AutoIT geschrieben wurde. Hierfür soll eine komplett neue GUI erstellt werden.
Code: Alles auswählen
#IMPORTS
import tkinter as tk
from tkinter import ttk
#Hauptfenster erzeugen
root = tk.Tk() # Fenster erzeugen
root.geometry("1130x843") # Größe bestimmen
#Frame erzeugen
widgetrandfarbe= '#646464'
widgethintergrundfarbe= '#323232'
buttonframe=tk.Frame(root, highlightbackground=widgetrandfarbe, highlightthickness=1, bg=widgethintergrundfarbe)
buttonframe.pack(side='top', fill="both", padx=5, pady=5, ipadx=5, ipady=5)
#Funktion zum Auslesen wieviele Buttons in eine Zeile passen
def buttonresize(e):
buttonspace = buttonframe.winfo_width()
if buttonspace <= 824:
maxbuttons=4
elif buttonspace <= 938:
maxbuttons=5
elif buttonspace <= 1144:
maxbuttons=6
elif buttonspace <= 1304:
maxbuttons=7
elif buttonspace <= 1462:
maxbuttons=8
elif buttonspace <= 1618:
maxbuttons=9
elif buttonspace <= 1785:
maxbuttons=10
else:
maxbuttons=11
label["text"] =(maxbuttons, " = MAXButtons") #Test-Label zum Anzeigen des Wertes wieviele Buttons in eine Zeile passen
buttonframe.bind("<Configure>", buttonresize)
rechnerbuttonlist= ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11","12", "13", "14","15", "16","17","18", "19", "20", "21",)
tab_control = ttk.Notebook(buttonframe)
rechnerbuttons = ttk.Frame(tab_control)
tab_control.add(rechnerbuttons, text='Rechner',)
tab_control.pack(expand=True, fill='both', padx=5, pady=5)
def buttonserzeugen(buttonlist, frame, maxbuttonsinrow, buttonwidth):
ccounter=0
rcounter=0
for buttontext in buttonlist:
button = tk.Button(frame, text=buttontext, width=buttonwidth)
button.grid(row=rcounter, column=ccounter, padx='5', pady='5', sticky="news")
if ccounter == maxbuttonsinrow-1:
rcounter += 1
ccounter = 0
else:
ccounter += 1
buttonserzeugen(rechnerbuttonlist, rechnerbuttons, 8, 15)
label = tk.Label(master=rechnerbuttons, fg="white", bg='#323232', highlightbackground="#646464", highlightthickness=1, text="Berechne...") #Test-Label zum Anzeigen des Wertes wieviele Buttons in eine Zeile passen
label.grid(row=5, column=0, padx='5', pady='5', sticky="news")
root.mainloop()