web-dev-qa-db-fra.com

Quelle est la différence entre les widgets de tkinter et tkinter.ttk en Python?

Le module principal tkinter et son sous-module ttk en Python 3 semblent contenir des widgets identiques (c'est-à-dire Buttons, CheckButtons, etc.). 

Ainsi, lors de la création d'un bouton, vous avez la liberté d'utiliser un widget tkinter.Button ou un tkinter.ttk.Button

Savez-vous quelle est la différence entre eux? Pourquoi choisiriez-vous l'un ou l'autre?

30
multigoodverse

Les widgets dans tkinter sont hautement et facilement configurables. Vous avez un contrôle presque total sur leur apparence: largeur des bordures, polices, images, couleurs, etc.

Les widgets ttk utilisent des styles pour définir leur apparence. Il faut donc un peu plus de travail si vous souhaitez un bouton non standard. Les variables ttk sont également un peu sous-documentées. Comprendre le thème sous-jacent et les moteurs de présentation (la disposition dans les widgets eux-mêmes, et non pas pack, grid et place) est un défi. 

De manière générale, les widgets à thème vous donneront une application plus "native", mais aux dépens d’une perte de configurabilité. 

Mon conseil est d'utiliser les widgets ttk si vous voulez que votre interface graphique ait un aspect un peu plus moderne, et les widgets tkinter si vous avez besoin d'un peu plus de configurabilité. Vous pouvez les utiliser tous les deux dans les mêmes applications. 

43
Bryan Oakley

Vous voudrez peut-être jeter un oeil sur Conversion d'applications existantes pour utiliser les widgets Tile

Regarde aussi:

Support de style Tk Widget

Comme indiqué dans ce document:

Récemment, d'autres kits d'outils Open Source tels que Qt (utilisé par le projet KDE ) Et GTK (utilisé par le logiciel d'édition graphique GIMP et le projet Gnome) sont apparus comme des alternatives puissantes et libres à Motif pour Développement d'interface graphique X-Window. Le succès grandissant de l'Open Source Des systèmes tels que GNU/Linux ont aidé les deux kits d’outils à attirer un vaste communauté de développeurs et la firme (et parfois conviviale) la concurrence entre les deux communautés a entraîné une explosion de nouvelles fonctionnalités. La soif de liberté et de personnalisation a créé le besoin de la facilité.

La mise en œuvre actuelle de Tk ne fournit que l'apparence native sur plates-formes prises en charge (Windows, X-Window, MacOS). Ce manque en partie explique la perte de partage mental de Tk, en particulier parmi les développeurs Linux, où le support de thème est considéré comme une fonctionnalité "géniale" ou indispensable.

Alors que l'objectif de nombreuses interfaces graphiques hier était l'objectif visuel multiplate-forme l’uniformité (Qt et GTK ont emprunté une grande partie de leur apparence visuelle à Windows, qui avait emprunté auparavant à NeXTSTEP), il est maintenant assez courant trouver d'énormes différences visuelles sur les ordinateurs de bureau d'aujourd'hui, même sur des ordinateurs similaires systèmes. Les concours de captures d'écran sont assez courants de nos jours.

...

De nombreux utilisateurs de Tk peuvent considérer le support de thèmes comme cosmétique ou de niveau inférieur importance que des fonctionnalités indispensables telles que les mégawidgets ou objectivation. Néanmoins, il s’agit d’une caractéristique essentielle mis en œuvre pour la viabilité à long terme de Tk. Beaucoup de cours sont maintenant promouvoir Qt, GTK ou (aarggg!) Swing à la place de Motif, laissant no place pour Tk. Quelles que soient ses qualités (multiplate-forme, performance, facilité d'utilisation , Internationalisation et support Unicode), le manque de la convivialité sera toujours considérée comme l’une des principales raisons de ne pas en utilisant Tk. Les applications utilisant Tk au lieu de GTK auront l’air "étranger" sur le bureau Linux à thème pixmap, ou même sur les nouveaux MacOS et Windows versions antérieures à la version 8.0 étaient sur des ordinateurs de bureau non-X.

Certains widgets (6 au total) font partie de ttk, et non pas tkinter . Il existe, comme indiqué ci-dessus, des éléments de configuration manquants, tels que fg et bg, Mais cela peut être fait avec style, ( introduit dans tk 8.5).

En utilisant les deux ensemble, avec la surcharge tkinter.ttk, tkinter vous donne le meilleur des deux mondes.

Certains des widgets supplémentaires dans ttk sont très utiles (il y en a 6 qui ne se trouvent pas dans tkinter), comme Notebook (fenêtres à onglets) que j'utilise souvent.

Larz60p

2
Larz60p

Mon opinion pour les débutants apprend Tkinter parce que c'est vraiment très facile à apprendre. Bu sur la main Tkinter.ttk est un module conçu pour rendre le widget Tkinter vraiment parfait, mais il est vraiment difficile et il n’ya pas d’options faciles là-bas, optez simplement pour les plus difficiles. Comme s'il n'y avait pas -fg, -bg. Peut-être qu’un nouveau style n’est pas disponible dans Tkinter. Il est uniquement conçu pour ttk et se trouve dans ttk.

Et les widgets Tkinter ne ressemblent pas vraiment aux autres widgets de plate-forme native.

Mais ttk est plus lisse, Nice et ressemble aux autres plateformes Nattive.

Par conséquent, si vous souhaitez que les applications soient privées pour votre usage personnel, utilisez Tkinter et utilisez également ttk si nécessaire, car ttk prend en charge davantage de widgets plus cool pouvant modifier l'apparence de votre application.

Et si vous créez des applications pour le public, optez pour les deux, car Tkinter est nécessaire à cause de la création de window et d'autres éléments plus importants, et pour les widgets, optez pour ttk.

Mais honnêtement, je vous dis d’utiliser les deux parce qu’il n’ya pas de conflit entre ces deux-là, utilisez-les simplement à votre avantage.

ttk est honnêtement un défi! Parce qu'il n'a pas de Grid, Pack, Place et de plus en plus de choses encore plus importantes. Mais attendez!! Tkinter l'a! Alors utilisez les deux! Essayez de faire une belle application!

La vraie différence entre eux réside dans le fait que les widgets Tkinter sont plus configurables en tant que choix et que ttk est plus moderne et qu'il est configurable avec des styles qui sont des raccourcis très pratiques. Et Tkinter est comme le noyau de la fenêtre et ttk est un style. Pense comme:

Tkinter --- HTML, Ttk --- CSS, Python --- JavaScript.

J'espère que vous avez eu une solution par cette réponse!

0
Jaidee