tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack

from tkinter import *
from tkinter import ttk

root = Tk()
logo = PhotoImage(file="kuscheltiere.png")
root.title("Anleitungen übersetzen")
root.geometry('350x400')

T = Text(root, height=2, width=30)
T.pack()
T.insert(END, "Willkommen zur Übersetzung")  # 'END' anstatt der falschen Methode

message = Entry(root, width=10)
message.grid(row=1, column=1)  # Grid-Positionierung nach dem Erstellen der Entry-Box
message.insert(0, "default")  # 0 anstatt 'INSERT' für den Index

ttk.Button(root, text="Übersetzung durchführen").grid()

root.mainloop()

Der Fehler tritt auf, weil versucht wird, sowohl das pack– als auch das grid-Layout-Manager innerhalb desselben Elternelements (hier root) zu verwenden. Das führt zu Konflikten.

In deinem Fall hast du das Textfeld T bereits mit pack() positioniert. Du solltest jetzt für das Entry-Widget message denselben Layout-Manager verwenden (in diesem Fall pack), um den Fehler zu vermeiden.

Hier ist der korrigierte Code:

from tkinter import *
from tkinter import ttk

root = Tk()
logo = PhotoImage(file="kuscheltiere.png")
root.title("Anleitungen übersetzen")
root.geometry('350x400')

T = Text(root, height=2, width=30)
T.pack()
T.insert(END, "Willkommen zur Übersetzung")

message = Entry(root, width=10)
message.pack()  # Verwende pack statt grid
message.insert(0, "default")

ttk.Button(root, text="Übersetzung durchführen").pack()  # Auch hier pack verwenden

root.mainloop()

Ich habe grid() durch pack() ersetzt.

Schreibe einen Kommentar