Python 3中的主tkinter
模块及其子模块ttk
似乎包含相同的小部件(即Buttons
,CheckButtons
等)。
因此,在创建按钮时,可以自由使用tkinter.Button
小部件或tkinter.ttk.Button
。
答案 0 :(得分:44)
tkinter
中的小部件高度且易于配置。您几乎可以完全控制它们的外观 - 边框宽度,字体,图像,颜色等。
ttk
小部件使用样式来定义它们的外观,因此如果您需要非标准按钮,则需要更多工作。 ttk
小部件也有点记录不足。理解底层主题和布局引擎(小部件本身内的布局,而不是pack
,grid
和place
)是一项挑战。
一般来说,主题小部件将为您提供一个看起来更“原生”的应用程序,但代价是失去可配置性。
我的建议是使用ttk
小部件,如果你希望你的GUI看起来更现代一些,那么tkinter小部件如果你需要更多的可配置性。您可以在相同的应用程序中使用它们。
答案 1 :(得分:2)
您可能需要查看Converting existing applications to use the Tile widgets
另见:
如本文件所述:
最近,其他开源工具包如Qt(由KDE使用) 项目)和GTK(由GIMP图形编辑软件和 Gnome项目)成为Motif for的强大且免费的替代品 X-Window GUI开发。开源迅速增长的成功 像GNU / Linux这样的系统帮助这两个工具包吸引了大量的工具 开发者社区和公司(有时是友好的) 两个社区之间的竞争导致了新的爆炸式增长 特征。对自由和可定制性的渴望创造了对它的需求 themeability。
Tk的当前实现仅提供原生外观和感觉 支持的平台(Windows,X-Window,MacOS)。这部分缺乏 解释了Tk失去了思想共享,特别是在Linux开发人员中, 主题支持被视为"酷"或必备功能。
虽然昨天许多GUI的目标是跨平台视觉 均匀性(Qt和GTK借鉴了他们的大部分视觉外观 Windows,早先从NeXTStep借来的),现在很常见 在今天的桌面上找到巨大的视觉差异,即使是类似的 系统。截图竞赛现在非常普遍。
...
许多Tk用户可能会将主题支持看作是装饰性的或更低级的 重要性比非常需要的功能,如megawidgets或 客观。然而,这是一个关键特征 为了Tk的长期生存能力而实施。现在有很多课程 促进Qt,GTK或(aarggg!)Swing代替Motif,不留 Tk的房间。无论其品质如何(跨平台,性能,易用性) 使用,国际化和Unicode支持),缺乏 可见性永远被视为不是主要原因之一 使用Tk。使用Tk而不是GTK的应用程序看起来像"外来的" 以pixmap为主题的Linux桌面,甚至是更新的MacOS和Windows 版本,因为8.0之前的应用程序在非X桌面上。
有一些小部件(总共6个)是ttk的一部分,而不是tkinter。 如上所述,有一些配置项缺失,如fg和bg, 但这可以用风格来完成(在tk 8.5中介绍)。
将两者结合使用,使用tkinter.ttk重载tkinter可以为您提供两全其美的效果。
ttk中的一些额外小部件非常有用(在tkinter中找不到6个小部件),比如经常使用的Notebook(选项卡式窗口)。
Larz60p
答案 2 :(得分:0)
我对初学者的看法是学习Tkinter
,因为它真的很容易学习。手Tkinter.ttk
上的Bu是一个模块,用于使Tkinter
小部件真正完美,但确实很困难,并且那里没有简单的选择,只适合较难的选择。就像没有-fg
,-bg
一样。也许,Tkinter
中没有一种新样式。它仅适用于ttk
,可以在ttk
中找到。
Tkinter
小部件确实看起来不像其他本机平台小部件。
但是ttk
看起来更流畅,更漂亮,并且与其他nattive平台一样。
因此,如果您将应用设为私有供自己使用,请使用Tkinter
,并在需要时使用一些ttk
,因为ttk
支持更多更酷的小部件,这些小部件可以改变您的外观应用程序。
如果您制作的应用程序是公开的,则同时使用这两种方法,因为创建窗口和一些更重要的内容需要Tkinter
,对于小部件则选择ttk
。
但是说实话,我说两者都用,是因为这两者之间没有战斗,只是为了自己的利益而使用它们。
ttk
确实是一个挑战!因为它没有Grid
,Pack
,Place
以及越来越多的重要内容。可是等等!! Tkinter
拥有了!因此,请同时使用!尝试制作一个不错的应用程序!
它们之间的真正区别在于,Tkinter
小部件可以根据需要进行配置,而ttk
则更现代,并且可以使用样式来配置,这是非常方便的快捷方式。 Tkinter
就像窗口的核心,ttk
就是样式。像这样思考:
Tkinter --- HTML, ttk --- CSS, Python --- JavaScript。
希望这个答案对您有帮助!
答案 3 :(得分:0)
Ttk 可以更可定制,但正如其他人所说,需要学习如何构建自定义样式等......但是,IMO 的外观和感觉明显优于 IMO标准 tkinter 小部件。
如果您想使用 ttk 并且想要更多地控制颜色,您可以使用像 ttkbootstrap 这样的库,它有几十个主题并为每个小部件内置颜色样式。甚至还有一些用于仪表和日历等的非标准小部件......
答案 4 :(得分:0)
这只是 GUI 窗口的设计问题。所以 Tkinter 是一个非常易于使用的高效和有用的 GUI 工具包。但它看起来有点过时了。 Tkinter Ttk 小部件类似于 Tkinter 的小部件。它基本上是 Tkinter 的一个子模块。因此,在 Tkinter Ttk 中,几乎许多小部件都是相同的,但使用它们是不同的。 Tkinter Ttk 小部件更具可定制性,很多 windows 程序都是使用 Tkinter 完成和设计的