34

Tk GUI 似乎被普遍认为是丑陋的,但我想知道具体原因。Tcl/Tk 世界中的一些人会争辩说,这是一个有争议的问题,因为现在对本地外观和感觉有更好的支持,这是我决定使用 Tcl/Tk 的一个重要原因。然而,现在的问题是,因为我正在利用 Tcl/Starkit vfs(虚拟文件系统),本机文件对话框不起作用,我将不得不恢复到纯 Tk 文件对话框。

请我寻找特定的技术原因,例如关于字体别名(或缺少)或字体样式或颜色等。因为我个人不买“这对我来说很丑”。对我来说,它只是不同,我经常在 Mac 和 Windows 和 Linux 之间切换,所以我习惯了不同的外观/感觉。

具体来说,传统 Tk GUI 的主题式外观被认为是丑陋的:

Tcl/Tk GUI 示例

4

8 回答 8

54

我认为部分原因是 Tk 非常强大且易于使用,但它并没有做太多的手持操作。因为它很容易,所以在 UI 设计方面经验不足的人可以在很短的时间内完成一些工作。但是,没有很多经验,他们依赖默认值和最短路径解决方案(阅读:不要在不需要时隐藏滚动条,不要使用常用的工具栏成语,不要' t 正确对齐小部件等)。

不幸的是,Tk 的默认设置并不总是最漂亮的。正如问题中的屏幕截图所示,默认使用相对较粗的边框宽度和次优字体,并且复选框确实直接来自 80 年代。但是,在专家手中,所有这些问题都是可以在空闲时间处理的小问题。

例如,经过五分钟的调整,原始屏幕截图可能如下所示:

略微改进的用户界面

当然,这看起来仍然有点笨拙,但可以说它比原来的要好很多。有一个小时专门用于这项任务,可以进行更多改进。

使用 tk 8.5(实际上是几年前)支持主题和原生小部件,甚至 X11 版本也进行了小幅改进。不过,Tk 仍然落后于眼睛糖果的曲线,如果设计需要渐变、动画等,它会迫使人们“自己动手”。

然而,对于大多数类型的应用程序,Tcl 和 Tk 仍然是一个很好的实用解决方案。如果您试图与 Flash 应用程序竞争,您将失败。但是,如果您的工业应用程序只需要工作和可用并且可能是多平台的,那么 Tk 仍然是最好的选择之一。


截至 2015 年,有一篇关于现代化 Tkinter 的 IDLE IDE 的精彩文章。这篇文章描述了一些使 IDLE 看起来更现代的步骤:

于 2008-12-08T15:01:19.993 回答
33

事实上,“它只是不同”的论点是我的主要原因。Tk GUI 的外观和行为不像本机应用程序,这会以多种小方式影响“外观和感觉”,与给定系统上的本机应用程序相比,这会使复杂的应用程序感觉怪异和笨拙。

文件对话框可能是我所写内容的一个完美示例:它们可能不会比某些系统上的本机对话框“更糟”或“更好”,但它们是不同的,它们的行为与系统上的所有其他应用程序不同。

如果您是 MacOS X 用户,您可以通过比较原生 Mac 应用程序与在 Mac 上运行的具有 X11 兼容层(如 Gimp 或 Inkscape)的应用程序来感受它。它们与所有其他应用程序的行为不同(顶部栏中没有菜单,cmd+tab 的工作方式略有不同,cmd+backtick 的工作方式大不相同),所以 - 虽然它们在 Linux X11 桌面上的行为很好 - 同样的行为在 Linux X11 桌面上感觉很奇怪和笨拙苹果电脑。

Tk 的缺点是这些 GUI 实际上并不是任何地方的原生。

对于可移植的 UI,我可能会推荐 wxWidgets,它只是系统提供的任何原生 UI 的通用 API 层(外观)。对于您当前的情况,这可能有点离题,但无论如何它可能值得一看。

于 2008-12-08T12:56:50.417 回答
22

与过去相比,TK 对原生外观 GUI 的支持要好得多。早期版本的 Tk 具有类似主题的外观和感觉,旨在与基于主题的桌面环境(如 MWM 和 CDE)一起使用。在这种环境下,它看起来像一个原生应用程序。长期以来,Motif 被用作 X11 应用程序的默认 GUI 工具包。GTK 和(在某种程度上)QT 的出现意味着许多此类应用程序不再是这种情况。

大多数现代跨平台 GUI 工具包——GTK、QT Tk、WXWidgets 等——现在都有一些机制来使用底层的原生小部件。WX 从一开始就是为此而设计的——X11 上的 GTK 和 Motif 版本,Windows 上的 Win32 和(IIRC)OSX 版本。GTK 有一个主题引擎并使用基于本机小部件的主题。QT 模拟了外观和感觉,Tk 有一个本地工具包的包装器。

具有原生外观和感觉的 TK 应用程序示例:

  1. SnackAmp(Vista 上的 Win32)

Windows Vista 上的 SnackAmp Tk GUI

  1. Linux 上的 PostgreSQL 访问

具有原生外观的 Tk API

于 2008-12-08T13:05:44.237 回答
10

因为它的外观是由既不是 UX 也不是图形设计师而是程序员的人设计的。也许它解决了这个问题(在多个平台上拥有相同的 UI),但它看起来很难看。

补充:实际上,让 UI 达到不被认为丑陋的程度是一门艺术。我的团队中有两个极端。一个人只是不关心 UI:他看到一个按钮,不管它在屏幕上如何绘制,它都是一个按钮;即使您在鲜红色的背景上将它“使我的眼睛睁大”的石灰绿色,他仍然会认为它是一个按钮,因为它“像按钮一样嘎嘎作响”。另一个团队成员就是要让 UI 变得“酷”。但他完全忽略了这一点,即 Office 2007 不仅仅是闪亮的外观使“Office 2007”成为“Office 2007”,还包括图标、控件之间的一致性、与它们交互的方式——所有这些看起来与感觉的小细节。结果?猪身上的口红。

于 2008-12-08T13:07:20.660 回答
9

只是一个例子:如果你看一下你提供的例子,你会看到很多额外的行——滚动条有几行,然后文本持有者的矩形有几行,所以在边框上发生了很多事情。

对于程序员来说,我们从逻辑上看可能没有错,从逻辑上讲,每个元素都有自己的边界。但对于其他人来说,它看起来超负荷了。

这是一个视觉设计问题,而不是编程问题。这更像是“为什么 iPod 好而 Zune 丑”之类的东西——你无法得到一个直接可衡量的答案,但大多数人仍然会同意,如果你关心他们,这是你需要做些什么的事实意见 - 即,卖给他们。

于 2008-12-08T13:14:02.393 回答
6

很难对这样的问题保持客观​​,我认为这在本质上是非常主观的。

有几点似乎让我感到不安:

  • 滚动条无处不在,而不仅仅是在需要的地方
  • 相当“胖”的滚动条,占用大量空间
  • 大量粗体字体,例如在菜单标题等
  • 某些地方的等宽(“打字机风格”)文本
于 2008-12-08T13:03:05.520 回答
6

似乎这个讨论至少应该提到这些链接:

http://wiki.tcl.tk/8646 http://wiki.tcl.tk/9485

于 2008-12-09T03:23:07.657 回答
1

Tk 是否漂亮,这取决于人,但我会说它至少不丑(除了 android)。看看我使用纯 python 和 tkinter (Tk) 制作的程序的屏幕截图。你只需要知道如何以更漂亮的方式使用它。在此处输入图像描述在此处输入图像描述

于 2020-05-16T11:28:15.533 回答