2015-01-12 26 views
5

Ho lavorato a una GUI utilizzando Perl Tkx e ho scoperto che esistono due funzioni separate che è possibile utilizzare per creare pulsanti. (button e ttk__button).Perl Tkx, qual è la differenza tra "pulsante" e "ttk__button"?

Finora l'unica differenza che ho trovato è che la funzione button sembra centrare il testo mentre la funzione ttk__button a sinistra giustifica il testo.


Esempio con button:

#!/usr/bin/perl 

use strict; 
use warnings; 

use Tkx; 

my $text = "Hello\nworld!\n\nThis is some text..."; 
my $mw = Tkx::widget->new("."); 

my $b = $mw->new_button(
    -text => $text, 
    -command => sub { exit; }, 
); 
$b->g_grid; 

Tkx::MainLoop() 

Questo script centrare il testo:

Centered text


Esempio con ttk__button:

#!/usr/bin/perl 

use strict; 
use warnings; 

use Tkx; 

my $text = "Hello\nworld!\n\nThis is some text..."; 
my $mw = Tkx::widget->new("."); 

my $b = $mw->new_ttk__button(
    -text => $text, 
    -command => sub { exit; }, 
); 
$b->g_grid; 

Tkx::MainLoop() 

Questo script sinistra giustificare il testo:

Left justified text


Mi chiedevo quali altre differenze ci sono tra queste due funzioni, e se non v'è alcuna ragione particolare ci sono due funzioni separate che creare pulsanti. Uno di questi è in genere migliore da usare rispetto all'altro?

Inoltre c'è un modo per centrare giustificare il testo utilizzando la funzione ttk__button?

EDIT:

ho aggiunto il tag "Tcl" per questo poiché il Perl TKX è essenzialmente costruito fuori di Tcl. Sono abbastanza bravo con Perl ma sono un po 'novizio quando si tratta di Tcl.

Anche se a prima vista potrebbe non sembrare, questa è in realtà più una domanda Tcl che una domanda Perl quindi mi piacerebbe sentire una risposta da qualcuno che ha esperienza con Tcl.


NOTA:

per centrare il testo in un ttk__button aggiungere la seguente riga di codice:

Tkx::ttk__style_configure('TButton', -justify => 'center');

risposta

5

Button è uno dei, diciamo, 'tradizionale' widgets. La famiglia di widget ttk è più moderna e progettata per prestare attenzione alla configurazione di visualizzazione del sistema operativo host. Se vuoi che la tua app si fonda con il tema scelto dall'utente, usa i widget ttk. D'altra parte, se ti piace fare un sacco di lavoro per adattarsi, o vorresti che la tua applicazione sporgesse come un pollice dolente, allora usa assolutamente i widget "tradizionali".

Il controllo di precisione dei widget ttk può essere eseguito tramite l'opzione -style.Si consiglia di guardare la pagina tutorial @http://www.tkdocs.com/tutorial/styles.html.

Per quello che vale, i pulsanti spesso non contengono testo su più righe. Esistono altri widget progettati pensando al layout del testo.

EDIT:

Dal commento di tjwrona1992: Tkx::ttk__style_configure('TButton', -justify => 'center');

+0

Ok, è esattamente quello che mi stavo chiedendo, ma c'è un modo per centrare il testo su un pulsante 'ttk'? Quando uso più righe di testo e allinea tutto ha un aspetto brutto. – tjwrona1992

+0

Personalmente, rivalutarei il design che posiziona il testo su più righe in un pulsante. Il controllo più preciso dei widget di 'ttk' può essere esercitato tramite l'attributo' -style'. – tjd

+0

Bene, ho un pulsante che deve adattarsi a uno spazio relativamente piccolo. Anche se avesse il suo modo di tradurre a capo il testo che sarebbe utile. In questo momento se non uso "\ n" per farlo incrociare più righe, metterà tutto in una riga e allungare il display per adattarlo, il che non sembra molto buono. – tjwrona1992

2

Tk ha due classi di widget: in stile tradizionale e tiled. I widget tradizionali sono quelli che sono esistiti sin dall'inizio di Tk. I widget piastrellati sono relativamente nuovi. Emulano i widget nativi tramite il supporto per i temi. Molti (ma non tutti) i widget sono disponibili in entrambe le forme. Tile è iniziato come libreria separata prima di essere integrato in Tk 8.5 come Ttk.

Sfortunatamente, passare dai widget Tk tradizionali a quelli piastrellati non è semplice come aggiungere un'istruzione "usa ttk" perché i widget tradizionali e affiancati non hanno necessariamente lo stesso insieme di opzioni di configurazione.

In Tkx, il prefisso ttk viene utilizzato per specificare la versione piastrellata di un widget. Il wiki di Tcl Tk ha uno comparison di widget ttk che utilizzano vari temi. (Il tema "classico" corrisponde l'aspetto & sensazione di Tk tradizionale.) Ecco come button e ttk__button rendono sul mio sistema (Win7):

button vs ttk button

widget tradizionali sono più flessibili. È possibile configurare più attributi e farlo su base per-widget. I widget piastrellati hanno un aspetto migliore (ad esempio nativo) e semplificano la modifica del look generale & della tua applicazione.

Personalmente, utilizzo sempre i widget ttk quando disponibili.