Tk GUI似乎普遍被认为是丑陋的,但我想知道具体原因。 Tcl / Tk世界中的一些人认为这是一个没有实际意义的点,因为现在对于原生外观有更好的支持,这是我决定使用Tcl / Tk的一个重要原因。然而,现在问题是,因为我正在利用Tcl / Starkit vfs(虚拟文件系统),本机文件对话框不起作用,我将不得不恢复到纯Tk文件对话框。
请我寻找具体的技术原因,例如:关于字体别名(或缺少字体别名)或字体样式或颜色等。因为我个人不买“这对我来说只是丑陋”。对我而言,它只是与众不同,我会在Mac和Windows以及Linux之间切换,因此我习惯了不同的外观/感觉。
具体来说,传统Tk GUI的主题外观被认为是丑陋的:
答案 0 :(得分:45)
我认为部分原因是Tk功能强大且易于使用,但它并没有太多的手握。由于它非常简单,因此在UI设计方面经验不足的人可以在很短的时间内完成工作。但是,如果没有很多经验,他们会依赖默认设置和最短路径解决方案(阅读:不需要时间隐藏滚动条,不要使用工具栏的常用习语,不要正确对齐小部件等)。
不幸的是,Tk的默认值并不总是最漂亮的。正如问题中的屏幕截图所示,默认情况下使用相对较粗的边框宽度和次优字体,而复选框确实是80年代的直接。但是,在专家手中,所有这些问题都是可以在闲置时刻处理的小问题。
例如,通过五分钟的调整,原始屏幕截图可能如下所示:
当然,这看起来仍然有点笨拙,但可以说它比原来的要好一点。只需一个小时专门完成任务,就可以进行多项改进。
使用tk 8.5(实际上是几年前),支持主题和本机小部件,甚至X11版本也可以进行轻微改版。如果设计需要渐变,动画等等,Tk仍然在眼睛糖果的曲线背后,迫使人们“自己动手”。
然而,对于大多数类型的应用程序来说,Tcl和Tk仍然是一个很好的实用解决方案。如果您正在尝试与闪存应用程序竞争,您将失败。但是如果你有一个工业应用程序只需要工作和可用,也许是多平台,Tk仍然是那里的最佳选择之一。截至2015年,关于现代化Tkinter的IDLE IDE有一个很好的写作。本文介绍了使IDLE看起来更现代化的一些步骤:
答案 1 :(得分:30)
文件对话框可能是我所写内容的完美示例:它们可能不比某些系统上的本机对话框“更差”或“更好”,但它们是不同的,它们的行为与所有其他应用程序的行为不同系统。
如果您是MacOS X用户,您可以通过将原生Mac应用与Mac上运行的应用与X11兼容层(如Gimp或Inkscape)进行比较来了解它。它们的行为与所有其他应用程序的行为不同(顶部栏没有菜单,cmd + tab的工作方式略有不同,cmd + backtick的工作方式也大不相同),所以 - 虽然他们的行为在Linux X11桌面上运行良好 - 同样的行为感觉奇怪而且笨重Mac中。
Tk的缺点是这些GUI在任何地方都不是原生的。
对于便携式UI,我可能会推荐wxWidgets,它只是您系统提供的任何本机UI的公共API层(外观)。对于你目前的情况,这可能有点偏离现实,但无论如何它可能值得一看。
答案 2 :(得分:19)
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应用程序示例:
答案 3 :(得分:9)
因为它的外观是由既不是UX也不是图形设计师的人设计的,而是由程序员设计的。也许它解决了这个问题(在许多平台上都有相同的UI),但它看起来很难看。
添加了: 实际上,让UI达到不被认为丑陋的程度是艺术。我的团队中有两个极端。一个人不关心UI:他看到一个按钮,无论屏幕上是如何绘制的,它都是一个按钮;即使你在明亮的红色背景上画出“流眼睛”的柠檬绿,他仍然会认为它是一个按钮,因为它“嘎嘎作为一个按钮”。另一个团队成员就是让UI变得“酷”。但是他完全忽略了这一点,它不仅仅是闪亮的外观使Office 2007成为“Office 2007”,而且还有图标,控件的一致性,与它们互动的方式 - 所有这些细微的焊接效果。结果?猪上的口红。
答案 4 :(得分:8)
举一个例子:如果你看一下你提供的例子,你会看到很多额外的线条 - 滚动条有一些,然后文本架的矩形有一些,所以在边框上你有一个发生了很多。
对于程序员来说,我们逻辑上看可能没有错,逻辑上每个元素都有自己的边框。但对于其他人来说,它看起来超载了。
这是一个视觉设计问题,而不是编程问题。这更像是“为什么iPod很好,Zune丑陋”的东西 - 你无法得到一个直接可测量的答案,仍然大多数人会同意,这是你需要做的事情,如果你关心他们意见 - 即卖给他们。
答案 5 :(得分:6)
我很难尝试并且对这个问题保持客观,我认为这是非常主观的。
有几点似乎打扰了我:
答案 6 :(得分:5)
似乎这个讨论应该是 至少提到这些链接:
答案 7 :(得分:0)
Tk是否漂亮,取决于人,但我要说它至少不难看(除了android)。看看我使用纯python和tkinter(Tk)制作的程序的屏幕截图。您只需要知道如何以更漂亮的方式使用它即可。