Domanda

Questo è il codice che mi sta dando problemi.

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

Se io commento le linee con il marchio, i display telaio con la larghezza giusta. Tuttavia, aggiungendo l'etichetta sembra restringersi Telaio a misura dell'etichetta. C'è un modo per evitare che ciò accada?

È stato utile?

Soluzione

Per impostazione predefinita, cornici tk ridurre o crescere per soddisfare le loro contenuti , che è quello che vuole il 99% del tempo. Il termine che descrive questa caratteristica è "la propagazione della geometria". C'è un comando per attivare propagazione geometria o disattivare quando utilizzando pack (e simile uno per grid).

Dal momento che si sta utilizzando pack, la sintassi potrebbe essere:

f.pack_propagate(0)

o forse root.pack_propagate(0), a seconda di quale widget di (s) si vuole realmente incidere. Tuttavia, perché non avete dato l'altezza del telaio, è l'altezza di default è 1 pixel in modo ancora non può vedere i widget interni. Per ottenere il pieno effetto di ciò che si vuole, è necessario dare la cornice contenente sia una larghezza e un'altezza.

Detto questo, la maggior parte del tempo si dovrebbe lasciare tkinter calcolare le dimensioni. Quando si accende la propagazione geometria il vostro GUI non risponde bene ai cambiamenti di risoluzione, cambiamenti di font, ecc di Tkinter manager geometria (pack, place e grid) sono notevolmente potenti. Imparare a trarre vantaggio da questo potere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top