2011-06-28 5 views
33

Navigando nel sito Web TkDocs, sembra che Tk abbia fatto molta strada nel reparto "aspetto originale". Ma guardando alcuni di these screenshots, sembra essere deluso in Linux. Se scorri verso il basso quella pagina, vedrai uno screenshot del Mac che assomiglia esattamente a Mac, uno screenshot di Windows XP che assomiglia esattamente a Windows XP e uno screenshot di Linux che sembra ... beh Windows 98 (o Windows XP con classico stile).Rendere Tk simile a un'app nativa per Linux

So che Linux non ha un "aspetto nativo", poiché ogni toolkit ha il proprio stile. Ma mi chiedo se ci sia un modo per dare uno stile a Tk in modo che sembri GTK o Qt (preferibilmente Gtk), quindi si confonderà con la maggior parte delle altre app sul desktop Linux.

Che dire di Windows Vista/7? Non ho visto alcun screenshot di Tk su quelle piattaforme.

risposta

17

Tk ha fondamentalmente due set di widget, i classici widget e i widget a tema. I widget classici sono predefiniti a causa della necessità di supportare le vecchie applicazioni, ma il nuovo codice dovrebbe utilizzare i widget tematici. (Non possono essere sovraccaricati perché funzionano in modi molto diversi, e c'è molto codice là fuori che dipende dal vecchio modo classico. Ahimè.) Con il tema giusto, i widget a tema (tipicamente definiti come Ttk) nativo e si comportano in modo nativo su Windows e OSX.

Ci sono temi Ttk parziali che delegano a Gtk e Qt disponibili (this presentation dall'anno scorso li mostra in azione) ma sono parziali, in gran parte a causa della scarsa qualità dei temi (temi Gtk/Qt, non Ttk temi, questo è confuso!) In uso tipico con quei toolkit. Il problema principale è apparentemente nel riportare le metriche, che spesso sembrano essere errate (il risultato è che i widget ottengono la dimensione sbagliata o gli elementi visivi posizionati nel posto sbagliato); Capisco dal parlare all'autore di quel documento che una parte significativa dei temi funziona solo con Gtk/Qt, ma non posso verificarlo dall'esperienza personale. (Sono su OSX quindi utilizzo il supporto nativo diretto di Ttk.)

+0

+1 per il collegamento alla presentazione, che risponde completamente alla domanda. – mgiuca

+0

Sono passati più di 4 anni. Come stanno i temi Gtk e Qt? – Hubro

+0

Il tema delle clearlook per linux è abbastanza bello ... [tema clearlooks] (https://github.com/ssokolow/profile/tree/master/home/.local/share/tkthemes) –

2

Proprio da quello che ho sentito di tanto in tanto nella mailing list principale di Python, i widget TK (TTK) di Themed sono utilizzabili e possono imitare i widget nativi o fare le proprie cose e avere un bell'aspetto. Vedi http://www.tkdocs.com/tutorial/styles.html.

Per esperienza, Tk (almeno attraverso Python) sembra una schifezza. Ho tirato fuori un test per te su Windows 7: http://sadpanda.us/images/542945-LNUGO0F.jpg. Non proprio un osservatore di default!

+0

Grazie per i suggerimenti e lo screenshot. Strano .. Ho provato quella cosa di stile su Python ('ttk.Style(). Theme_names()') e ha generato una seconda finestra in cui sono definiti i widget. Non riesco a vedere alcuna differenza tra i temi - presumo perché la finestra A è dove sono tutti i miei widget e Window B ha applicato i temi. Qualche idea su come ottenere 'Tkinter' e' ttk' per fare riferimento alla stessa finestra? – mgiuca

+0

Non ho usato Tkinter in più di un anno, e non credo di aver mai usato ttk (ne ho sentito parlare molto più tardi), ma forse i documenti su http://docs.python.org/dev/library /tkinter.ttk.html ha alcuni suggerimenti. So che ci sono più di tre esperti di Tkinter sulla lista python, quindi sentitevi liberi di sparare a loro mail (http://mail.python.org/mailman/listinfo/python-list). –

+0

Grazie. Non ho trovato nulla immediatamente, ma ho dato un'occhiata più da vicino. – mgiuca

3

Per gli utenti impazienti di un Linux moderno distribuzione:

echo '*TkTheme: clam' >> ~/.Xresources 
xrdb -merge ~/.Xresources 

Quindi riavviare il tuo Tk bas ed app.

Ecco cosa aspettarsi (indicato è GUI Git):

applied tk theme

a sinistra è git gui è iniziata dopo il comando di cui sopra è stato emesso. Notate come è cambiata la barra, anche i pulsanti.