2012-03-29 11 views
8

Questa sembra una domanda stupida, ma è possibile modificare manualmente l'altezza di un pulsante ttk?Modifica altezza tasto ttk in Python

Qualcosa come button = tkinter.Button(frame, text='hi', width=20, height=20...) funziona bene per un pulsante tkinter. Anche se preferirei usare un tasto ttk perché sembra molto meglio esteticamente.

button = ttk.Button(frame, text='hi', width=20, height=20...) non funziona, l'altezza non sembra essere un'opzione valida. Ho provato a impostarlo con la configurazione o a cercare elementi nello stile da modificare e non ho avuto fortuna.

C'è una soluzione semplice a questo? Sto usando Python 2.7, Windows per la cronaca. Scusa, mi sembra una specie di domanda banale ma mi sono guardato intorno senza molta fortuna.

risposta

5

Per rispondere direttamente alla tua domanda, no, non puoi farlo. L'intero punto dei pulsanti a tema è quello di fornire una dimensione uniforme.

Detto questo, c'è un sacco di spazio per il pensiero immediato. Ad esempio, è possibile impacchettare il pulsante in una cornice, disattivare la propagazione della geometria sul fotogramma (quindi le dimensioni della cornice controllano le dimensioni del pulsante anziché viceversa), quindi impostare la dimensione del fotogramma in base a ciò che si desidera.

Oppure, prova a mettere un'immagine trasparente sul pulsante che è l'altezza desiderata, quindi utilizza l'opzione compound per sovrapporre l'etichetta sull'immagine invisibile.

Oppure, creare un tema personalizzato che utilizza il riempimento per ottenere le dimensioni desiderate.

Infine, puoi mettere il pulsante in una griglia, farlo "appiccicoso" su tutti i lati, quindi impostare un'altezza minima per quella riga.

Ovviamente, se si è su OSX tutte le scommesse sono disattivate - lo in realtà vuole rendere i pulsanti di una dimensione specifica.

+0

Grande, quelli tutti sembrano come potente buon lavoro intorno. Grazie. – user1301039

+0

Anche la disattivazione della propagazione della geometria e l'inserimento in una cornice funzionano con la griglia? L'ho provato una volta, ma non riuscivo a farlo funzionare bene. Potrebbe essere necessario fare un secondo tentativo. – Kumba

+0

@Kumba: la griglia e il pacchetto non sono diversi in questo senso: quando si disattiva la propagazione della geometria, la dimensione del widget figlio non influisce sulle dimensioni del widget contenitore. –

2

Solo un esempio, come @Bryan ha detto, "Per esempio, potete imballare il pulsante in una cornice", l'ho fatto in questo modo:

import Tkinter as tk 
import ttk 

class MyButton(ttk.Frame): 
    def __init__(self, parent, height=None, width=None, text="", command=None, style=None): 
     ttk.Frame.__init__(self, parent, height=height, width=width, style="MyButton.TFrame") 

     self.pack_propagate(0) 
     self._btn = ttk.Button(self, text=text, command=command, style=style) 
     self._btn.pack(fill=tk.BOTH, expand=1) 
0

questo ha funzionato per me:

my_button = ttk.Button(self, text="Hello World !") 
my_button.grid(row=1, column=1, ipady=10, ipadx=10) 

dove ipady e ipadx aggiunge pixel all'interno del pulsante a differenza pady e padx che aggiunge pixel al di fuori del pulsante