Python中tkinter和tkinter.ttk的小部件有什么区别?

mul*_*rse 40 python tkinter ttk

tkinter模块和子模块其ttk在Python 3看起来包含相同窗口小部件(即Buttons,CheckButtons等).

因此,在创建按钮时,可以自由使用tkinter.Button小部件或tkinter.ttk.Button.

你知道他们之间有什么区别吗?你为什么选择其中一个?

Bry*_*ley 53

小部件tkinter高度且易于配置.您几乎可以完全控制它们的外观 - 边框宽度,字体,图像,颜色等.

ttk窗口小部件使用样式来定义它们的外观,因此如果需要非标准按钮,则需要更多工作.ttk小部件也有点记录不足.理解底层主题和布局引擎(小部件本身的布局,不是pack,gridplace)是一个挑战.

一般来说,主题小部件将为您提供一个看起来更"原生"的应用程序,但代价是失去可配置性.

我的建议是使用ttk小部件,如果你希望你的GUI看起来更现代,那么如果你需要更多的可配置性,那就是tkinter小部件.您可以在相同的应用程序中使用它们.


Jai*_*dee 8

对于刚开始学习的初学者,我的意见Tkinter是使用Tkinter小部件,因为它们真的很容易学习。但另一方面Tkinter.ttk是一个旨在使Tkinter小部件看起来非常完美的模块,但真的很难学习,而且没有简单的选择。就像没有-fg-bg。也许,在Tkinter. 样式仅适用于ttk,并且可以在ttk.

而且Tkinter小部件确实看起来不像其他原生平台小部件。

但是ttk看起来更好更流畅,并且看起来像其他原生平台。

因此,如果您正在为自己的私人用途制作应用程序,那么请使用Tkinterttk在需要时使用一些,因为ttk支持可以改变应用程序外观的更酷的小部件。

如果你正在制作供公众使用的应用程序,那么两者Tkinter都需要,因为创建窗口和一些更重要的东西需要,而小部件则需要ttk.

但老实说,我说两者都用是因为两者之间没有冲突;只需将它们都用于您的优势即可。

诚实使用ttk是一个挑战!因为它没有GridPackPlace和在正常使用许多其他的选择Tkinter部件。可是等等!!Tkinter有这些选择!所以两者都用!尝试制作一个不错的应用程序!

这是两者之间的真正区别:Tkinter小部件更可配置,ttk更现代,并且可以配置样式,这些样式非常方便快捷。而且Tkinter就像是窗口的核心,ttk是造型。可以这样想:

Tkinter --- HTML,ttk --- CSS,Python --- JavaScript。


Lar*_*60p 6

您可能需要查看转换现有应用程序以使用 Tile 小部件

另见:

Tk 小部件样式支持

如本文件所述:

最近,其他开源工具包,如 Qt(由 KDE 项目使用)和 GTK(由 GIMP 图形编辑软件和 Gnome 项目使用)作为 Motif 的强大且免费的替代品出现,用于 X-Window GUI 开发。开源系统(如 GNU/Linux)的迅速增长的成功帮助这两个工具包吸引了庞大的开发人员社区,并且两个社区之间的激烈(有时是友好的)竞争导致了新功能的爆炸式增长。对自由和可定制性的渴望创造了对主题性的需求。

Tk 的当前实现仅在支持的平台(Windows、X-Window、MacOS)上提供本机外观。这种缺乏部分解释了 Tk 失去思想共享,特别是在 Linux 开发人员中,主题支持被认为是“很酷”或必须具备的功能。

虽然昨天许多 GUI 的目标是跨平台视觉一致性(Qt 和 GTK 的大部分视觉外观都从 Windows 中借用,后者更早地从 NeXTStep 中借用),但现在在今天的桌面上发现巨大的视觉差异是很常见的,即使在类似的系统上也是如此. 截图比赛现在很常见。

...

许多 Tk 用户可能认为主题支持是装饰性的,或者比大部件或对象化等急需的功能更重要。尽管如此,对于 Tk 的长期生存能力来说,这是一个需要实施的关键特征。许多课程现在都在推广 Qt、GTK 或(aarggg!)Swing 来代替 Motif,为 Tk 留出空间。无论其品质如何(跨平台、性能、易用性、国际化和 Unicode 支持),缺乏主题性将始终被视为不使用 Tk 的主要原因之一。使用 Tk 而不是 GTK 的应用程序在以像素图为主题的 Linux 桌面上,甚至在较新的 MacOS 和 Windows 版本上看起来都是“外来的”,因为 8.0 之前的应用程序在非 X 桌面上。

有一些小部件(总共 6 个)是 ttk 的一部分,而不是 tkinter。如上所述,缺少一些配置项,例如 fg 和 bg,但这可以通过样式完成(在 tk 8.5 中引入)。

将两者结合使用,通过 tkinter.ttk 重载 tkinter 为您提供两全其美的效果。

ttk 中的一些附加小部件非常有用(有 6 个在 tkinter 中找不到),例如我经常使用的 Notebook(选项卡式窗口)。

拉兹60p