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