Domanda

Voglio mettere un Canvas con un'immagine nella mia finestra, e quindi voglio impacchettare i widget sopra di esso, quindi Canvas fa da sfondo.

È possibile avere due stati per il gestore pack : uno per un set di widget e un altro per un altro set?

È stato utile?

Soluzione

La risposta alla tua domanda specifica è no. Non puoi avere due stati o utilizzare il pacchetto in due modi diversi nello stesso genitore.

Tuttavia, ciò che penso tu voglia realizzare è semplice. Usa le funzioni integrate nell'area di disegno per creare un elemento immagine che fa parte dell'area di disegno, quindi impacchetta le cose nell'area di disegno come se fosse una cornice.

Puoi realizzare qualcosa di simile creando un widget etichetta con un'immagine, quindi impacchetta i tuoi altri widget nell'etichetta.

Un vantaggio nell'uso di una tela è che puoi facilmente affiancare un'immagine per riempire l'intera tela con un'immagine di sfondo ripetuta in modo che quando la finestra cresce l'immagine continuerà a riempire la finestra (ovviamente puoi semplicemente usare un originale sufficientemente grande immagine ...)

Altri suggerimenti

Credo che la risposta di Bryan sia probabilmente la migliore soluzione generale. Tuttavia, potresti anche voler consultare il gestore della geometria place . Il gestore della geometria posiziona ti consente di specificare le dimensioni e la posizione esatte del widget ... che possono diventare noiose rapidamente, ma completeranno il lavoro.

  

... si è rivelato inattuabile perché volevo aggiungere etichette e più tele, ma non riesco a trovare alcun modo per rendere trasparenti i loro sfondi

Se è accettabile caricare un'estensione aggiuntiva, dai un'occhiata a Tkzinc . Dal sito web,

  

Il widget Tkzinc (storicamente chiamato Zinco) è molto simile al Tk Canvas in quanto entrambi supportano la grafica strutturata. Come la tela, Tkzinc implementa oggetti usati per visualizzare entità grafiche. Tali elementi possono essere manipolati e i vincoli possono essere associati ad essi per implementare comportamenti di interazione. Ma a differenza della tela, Tkzinc può strutturare gli oggetti in una gerarchia, ha il supporto per il ridimensionamento e la rotazione, il ritaglio può essere impostato per sotto-alberi della gerarchia degli oggetti, supporta curve muti-contorno. Fornisce inoltre rendering avanzato con l'aiuto di OpenGL, come sfumatura di colore, antialias, trasparenze e un elemento triangolare.

Attualmente lo sto usando su un progetto tcl e sono abbastanza soddisfatto dei risultati. Sono disponibili estensioni per tcl, perl e python.

Non senza scambiare gli alberi dei widget dentro e fuori, cosa che non credo possa essere fatta in modo pulito con Tk. Altri toolkit possono farlo in modo un po 'più elegante.

  • COM / VB / MFC può farlo con un controllo ActiveX: puoi nascondere / mostrare più controlli ActiveX nella stessa area. Qualsiasi contenitore ti permetterà di farlo cambiando il bambino. Se stai eseguendo un programma specifico per Windows, potresti riuscire a realizzarlo in questo modo.
  • QT ti permetterà anche di farlo in un modo simile.
  • GTK è leggermente più difficile.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top