es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tamaño del bloque de texto de Tkinter

Recientemente estoy trabajando en una tarea, pero he encontrado algunos problemas. El resultado que quiero es este:

El problema es:
El “lugar para escribir” debería estar inmediatamente después de mi texto, sin importar cuán largo sea el texto. Sin embargo, no importa qué texto ponga, el “lugar para escribir” parece permanecer en el mismo lugar.

Texto largo:
https://i.stack.imgur.com/U7jjN.png

Texto corto:
https://i.stack.imgur.com/ZYBUw.png

Aquí está mi código:

from tkinter import *

window = Tk()
window.title("Test")
window.geometry("1500x1000")

title = Label(window, bg="lightblue", fg="black", text="Test", font=("Times New Roman", 60), pady=5, width=window.winfo_screenwidth())
label = Label(window, bg="white", fg="black", text="Statement", font=("Calibri", 40, UNDERLINE), pady=5, padx=10)

content = Text(window, bg="white", fg="black", wrap='word', font=("Sans Serif", 21), width=window.winfo_screenwidth())
content.insert('end', "<strong><em>El texto que quiero insertar</em></strong>")
content["state"] = "disabled"
content["highlightthickness"] = 0
content["borderwidth"] = 0

text_edit = Text(window, width=56, height=25, bg="#0e0452", fg="white", font=("Rockwell", 20))

title.pack()
label.pack(anchor=NW)
content.pack(anchor=NW)
text_edit.pack(anchor=NW)

window.mainloop()

Creo que probablemente se deba al “content” en mi código, pero no sé cómo solucionarlo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema de que el “lugar para escribir” permanezca en el mismo lugar independientemente de la longitud del texto, el atributo de ancho del widget de texto de contenido debe establecerse en un valor fijo en lugar de utilizar la función window.winfo_screenwidth(). Esto hará que el widget de contenido tenga el mismo ancho cada vez, independientemente de la longitud del texto.

    Aquí está el código actualizado:

    from tkinter import *
    
    window = Tk()
    window.title("Test")
    window.geometry("1500x1000")
    
    title = Label(window, bg="lightblue", fg="black", text="Test", font=("Times New Roman", 60), pady=5, width=window.winfo_screenwidth())
    label = Label(window, bg="white", fg="black", text="Statement", font=("Calibri", 40, UNDERLINE), pady=5, padx=10)
    
    content = Text(window, bg="white", fg="black", wrap='word', font=("Sans Serif", 21), width=70)  # cambiar el ancho a un valor fijo
    content.insert('end', "***El texto que quiero insertar***")
    content["state"] = "disabled"
    content["highlightthickness"] = 0
    content["borderwidth"] = 0
    
    text_edit = Text(window, width=56, height=25, bg="#0e0452", fg="white", font=("Rockwell", 20))
    
    title.pack()
    label.pack(anchor=NW)
    content.pack(anchor=NW)
    text_edit.pack(anchor=NW)
    
    window.mainloop()
    

    Esto hará que el widget de contenido tenga el mismo ancho cada vez, independientemente de la longitud del texto, y el “lugar para escribir” siempre aparecerá inmediatamente después del texto.

Comments are closed.