Pregunta

quiero poner un Canvas con una imagen en mi ventana, y luego quiero embalar widgets encima, por lo que el lienzo actúa como fondo.

¿Es posible tener dos estados para el pack gerente:¿uno para un conjunto de widgets y otro para otro conjunto?

¿Fue útil?

Solución

La respuesta a su pregunta específica es no.No puede tener dos estados ni utilizar el paquete de dos formas diferentes en el mismo padre.

Sin embargo, lo que creo que quieres lograr es simple.Utilice las funciones integradas del lienzo para crear un elemento de imagen que forme parte del lienzo y luego empaquete cosas en el lienzo como si fuera un marco.

Puede lograr algo similar creando un widget de etiqueta con una imagen y luego empaquetando los otros widgets en la etiqueta.

Una ventaja de usar un lienzo es que puedes fácilmente colocar una imagen en mosaico para llenar todo el lienzo con una imagen de fondo repetida, de modo que a medida que la ventana crezca, la imagen continuará llenándola (por supuesto, puedes usar una imagen original suficientemente grande). .)

Otros consejos

Creo que la respuesta de Bryan es probablemente la mejor solución general.Sin embargo, es posible que también desee consultar el lugar administrador de geometría.El lugar El administrador de geometría le permite especificar el tamaño y la posición exactos del widget...lo cual puede volverse tedioso rápidamente, pero hará el trabajo.

...resultó ser inviable porque quería agregarle etiquetas y más lienzos, pero no puedo encontrar ninguna manera de hacer que sus fondos sean transparentes

Si es aceptable cargar una extensión adicional, eche un vistazo a zinc.Desde el sitio web,

El widget Tkzinc (históricamente llamado Zinc) es muy similar al Tk Canvas en que ambos admiten gráficos estructurados.Al igual que Canvas, Tkzinc implementa elementos utilizados para mostrar entidades gráficas.Esos elementos se pueden manipular y se pueden asociar enlaces con ellos para implementar comportamientos de interacción.Pero a diferencia del Canvas, Tkzinc puede estructurar los elementos en una jerarquía, admite escalado y rotación, se puede configurar el recorte para subárboles de la jerarquía de elementos y admite curvas de múltiples contornos.También proporciona renderizado avanzado con la ayuda de OpenGL, como degradado de color, antialiasing, transparencias y un elemento de triángulos.

Actualmente lo estoy usando en un proyecto tcl y estoy bastante satisfecho con los resultados.Hay extensiones disponibles para tcl, perl y python.

No sin intercambiar árboles de widgets dentro y fuera, lo cual no creo que se pueda hacer limpiamente con Tk.Otros kits de herramientas pueden hacer esto de manera un poco más elegante.

  • COM/VB/MFC puede hacer esto con un control ActiveX: puede ocultar/mostrar múltiples controles ActiveX en la misma región.Cualquiera de los contenedores le permitirá hacer esto cambiando al niño.Si está ejecutando un programa específico de Windows, es posible que pueda realizarlo de esta manera.
  • QT también te permitirá hacer esto de manera similar.
  • GTK es un poco más difícil.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top