Textfeld dynamisch vergrößern
Verfasst: Sonntag 9. Februar 2025, 17:07
Hallo in die Runde,
ich habe folgendes Problem: meine Textfelder passen sich nicht dynamisch an, egal ob ich sie in ein .grid einbinde oder auf ein Frame.
Wenn ich width und height angebe verändern sie sich natürlich nicht dynamisch, wenn ich die Angabe weglasse werden die Felder riesig groß und überschreiten bei mehreren Textfeldern meinen Screen.
Wer hat Erfahrungen damit und kann mir sagen, warum
1. die Textfelder ohne width / height so riesig groß werden bzw wie man das anders einstellen kann
2. sich nicht flexibel anpassen
Kennt jemand eine Lösung dafür?
Ich hatte das gleiche Problem bei der Anpassung von Schrift und dort eine prozentuale Formel erstellt, die die Schrift ungefähr mit vergrößert - und Schrift ist ja in Pixeln angegeben - die width und heigth-Angaben eines Textfeldes sind es aber nicht. Wenn ich das prozentual umrechnen möchte, gibt es da hinterlegte Werte? Ein height / Zeile = x Pixel, ein width / Buchstabe, Zeichen = x Pixel?
Vielleicht gibt es ja auch eine ganz andere einfachere Lösung. Ich habe auch schon überlegt auf kivy 'umzusteigen', da man damit angeblich responsive gestalten kann - nur hätten die Textfelder dann vielleicht das gleiche Problem. Weiß jemand ob es dort geht?
Bitte um Erfahrungswerte. Wie macht ihr die Anpassung eines Textfeldes, wenn sich das Hauptfenster in der Größe verändert?
Danke schön.
Hier ein Beispiel, wie es leider nicht angepasst wird:
from tkinter import *
app = Tk()
app.title("")
app.wm_state("zoomed")
# ------------------------------------------------------------------------------
def leer():
pass
# beenden mit Escape
def schliessen(event):
app.destroy()
app.bind_all('<Escape>', schliessen)
# -----------------------------------------------------------------------------
Frame_Textbereiche = Frame(app)
Frame_Textbereiche.pack(side=TOP, pady=100, padx=100, expand=TRUE, fill=BOTH)
# --------------------------------------------------------------------
benennen_1 = Text(Frame_Textbereiche,
bg="#FF99CC", font=("Arial", 11))
benennen_2 = Text(Frame_Textbereiche,
bg="#FFFFCC", font=("Arial", 11))
benennen_3 = Text(Frame_Textbereiche,
bg="lightblue", font=("Arial", 11))
textfenster_1 = Text(Frame_Textbereiche,
fg="lightblue", bg="lightblue",
font=("Arial", 11), wrap="word")
textfenster_2 = Text(Frame_Textbereiche,
fg="lightblue", bg="lightblue",
font=("Arial", 11), wrap="word")
textfenster_3 = Text(Frame_Textbereiche,
fg="white",
font=("Arial", 11), wrap="word")
textfenster_1.focus()
benennen_1.grid(row=0, column=0, sticky="nswe")
benennen_2.grid(row=0, column=1, sticky="nswe")
benennen_3.grid(row=0, column=2, sticky="nswe")
textfenster_1.grid(row=1, column=0, sticky="nswe")
textfenster_2.grid(row=1, column=1, sticky="nswe")
textfenster_3.grid(row=1, column=2, sticky="nswe")
app.mainloop()
ich habe folgendes Problem: meine Textfelder passen sich nicht dynamisch an, egal ob ich sie in ein .grid einbinde oder auf ein Frame.
Wenn ich width und height angebe verändern sie sich natürlich nicht dynamisch, wenn ich die Angabe weglasse werden die Felder riesig groß und überschreiten bei mehreren Textfeldern meinen Screen.
Wer hat Erfahrungen damit und kann mir sagen, warum
1. die Textfelder ohne width / height so riesig groß werden bzw wie man das anders einstellen kann
2. sich nicht flexibel anpassen
Kennt jemand eine Lösung dafür?
Ich hatte das gleiche Problem bei der Anpassung von Schrift und dort eine prozentuale Formel erstellt, die die Schrift ungefähr mit vergrößert - und Schrift ist ja in Pixeln angegeben - die width und heigth-Angaben eines Textfeldes sind es aber nicht. Wenn ich das prozentual umrechnen möchte, gibt es da hinterlegte Werte? Ein height / Zeile = x Pixel, ein width / Buchstabe, Zeichen = x Pixel?
Vielleicht gibt es ja auch eine ganz andere einfachere Lösung. Ich habe auch schon überlegt auf kivy 'umzusteigen', da man damit angeblich responsive gestalten kann - nur hätten die Textfelder dann vielleicht das gleiche Problem. Weiß jemand ob es dort geht?
Bitte um Erfahrungswerte. Wie macht ihr die Anpassung eines Textfeldes, wenn sich das Hauptfenster in der Größe verändert?
Danke schön.
Hier ein Beispiel, wie es leider nicht angepasst wird:
from tkinter import *
app = Tk()
app.title("")
app.wm_state("zoomed")
# ------------------------------------------------------------------------------
def leer():
pass
# beenden mit Escape
def schliessen(event):
app.destroy()
app.bind_all('<Escape>', schliessen)
# -----------------------------------------------------------------------------
Frame_Textbereiche = Frame(app)
Frame_Textbereiche.pack(side=TOP, pady=100, padx=100, expand=TRUE, fill=BOTH)
# --------------------------------------------------------------------
benennen_1 = Text(Frame_Textbereiche,
bg="#FF99CC", font=("Arial", 11))
benennen_2 = Text(Frame_Textbereiche,
bg="#FFFFCC", font=("Arial", 11))
benennen_3 = Text(Frame_Textbereiche,
bg="lightblue", font=("Arial", 11))
textfenster_1 = Text(Frame_Textbereiche,
fg="lightblue", bg="lightblue",
font=("Arial", 11), wrap="word")
textfenster_2 = Text(Frame_Textbereiche,
fg="lightblue", bg="lightblue",
font=("Arial", 11), wrap="word")
textfenster_3 = Text(Frame_Textbereiche,
fg="white",
font=("Arial", 11), wrap="word")
textfenster_1.focus()
benennen_1.grid(row=0, column=0, sticky="nswe")
benennen_2.grid(row=0, column=1, sticky="nswe")
benennen_3.grid(row=0, column=2, sticky="nswe")
textfenster_1.grid(row=1, column=0, sticky="nswe")
textfenster_2.grid(row=1, column=1, sticky="nswe")
textfenster_3.grid(row=1, column=2, sticky="nswe")
app.mainloop()