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?
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.
Vous voudrez peut-être jeter un oeil sur Conversion d'applications existantes pour utiliser les widgets Tile
Regarde aussi:
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
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!