我知道Linux没有真正的“原生外观”,因为每个工具包都有自己的样式。但是我想知道是否有办法使Tk看起来像GTK或Qt(最好是Gtk),这样它就可以与Linux桌面上的大多数其他应用程序融为一体。
那么Windows Vista / 7呢?我没有看到任何运行在这些平台上的Tk截图。
我知道Linux没有真正的“原生外观”,因为每个工具包都有自己的样式。但是我想知道是否有办法使Tk看起来像GTK或Qt(最好是Gtk),这样它就可以与Linux桌面上的大多数其他应用程序融为一体。
那么Windows Vista / 7呢?我没有看到任何运行在这些平台上的Tk截图。
Tk基本上有两组小部件,经典小部件和主题小部件。由于需要支持旧应用程序,因此经典小部件是默认设置,但新代码应该使用主题小部件。(它们不能被重载,因为它们的工作方式相当不同,并且有很多依赖于旧经典方式的代码存在。唉)通过正确的主题,主题小部件(通常称为Ttk)在Windows和OSX上看起来和行为与本地小部件一样。
有针对Gtk和Qt委托的部分Ttk主题可用(去年的这个演示文稿展示了它们的效果),但它们是部分的,其中很大一部分原因是那些工具包中使用的主题(Gtk/Qt主题,而不是Ttk主题;这很令人困惑!)质量较差。主要问题显然在于度量值的报告,这些度量值通常似乎是错误的(导致小部件大小错误或视觉元素放置不当);从与那篇论文作者的交谈中,我了解到一大部分主题只能与Gtk/Qt一起使用,但无法从个人经验中进行验证。(我在OSX上使用Ttk的直接本地支持。)
PySolFC 包含一个漂亮且现代的外观,也可以与其他 Tk 应用程序一起使用。
Stephan Sokolow 在他的博客中详细介绍了这个主题:
根据我从Python的主邮件列表中不时听到的消息,Themed TK (TTK)小部件是可主题化的,可以模仿本地小部件或执行自己的操作并具有良好的外观。请参见http://www.tkdocs.com/tutorial/styles.html。
根据经验,Tk(至少通过Python)看起来很糟糕。我在Windows 7上为您提供了一个测试: http://sadpanda.us/images/542945-LNUGO0F.jpg。默认情况下并不好看!
ttk.Style().theme_names()
),它生成了一个第二个窗口,其中定义了小部件。我看不出主题之间有任何区别--我认为这是因为窗口A是所有我的小部件所在的地方,而窗口B应用了主题。您有什么办法让Tkinter
和ttk
都引用同一个窗口吗? - mgiuca