我正在转换旧的Tcl / Tk应用程序(20年前编写的......)以及有关如何操作以及如何操作的任何建议,我们将不胜感激。
目前,我可以调整代码并且它可以工作,但它有点难看(外观和感觉并不是非常令人满意,特别是因为应用程序应该在Linux和MacOS上运行)。
为了改善这一点,我在Tk中发现了两个重要的变化:主题小部件和网格几何管理器的引入。
Q1)从严格的外观和感觉的角度来看,这是一个好主意"切换到网格方法(这是一项大工作)?我可以混合网格和打包(因为对于某些动态GUI部分,打包方法更简单)?
对于外观和感觉,我尝试使用主题小部件(用ttk:label替换标签,......)但是它还不能令人满意。
例如,应用程序有一个标题区域(根据所选的菜单选项,可以包含多个不同的标题)。基本上我用它创建了它:
ttk::style theme use clam
ttk::frame .c -padding "4"
grid .c -sticky nsew
ttk::label .c.t -relief groove -borderwidth 4 -justify center -text \
"this is a title.\nAnd its subtittle\nHow to increase line spacing ?\nWhat about font size ?"
grid .c.t
标题可以是多行的(并且可以使用.c.t configure -text "new title"
多次修改)。结果是
Q2)如何增加2行之间的空间? (以及如何增加字体大小)?
Q3)我看到了一个文本小部件,但我找不到它的主题版本?我错过了什么吗?
非常感谢
答案 0 :(得分:1)
q1)是的,您可以根据需要混合包装和网格。只是不在同一帧内。有些人喜欢专门使用网格,有些人喜欢混合网格。
对主题here进行了比较。我发现Linux上的'arc'和'clearlooks'主题看起来很不错。对于Mac OS X,请保留主题 作为默认的'aqua'。
q2)可以使用font命令创建新字体。对于ttk小部件 这些可以使用ttk::style命令应用(在大多数情况下)。
对于ttk::label
,线条间距由显示的任何字体设置
text
命令可以让您更好地控制行间距。
package require Tk
ttk::style theme use clam
ttk::frame .c -padding "4"
grid .c -sticky nsew
font create newfont
font configure newfont -size 13
ttk::style configure New.TLabel \
-font newfont \
-justify left
ttk::label .c.t -relief groove -borderwidth 4 -text \
"this is a\nmultiline text.\nHow to increase line spaceing ?" \
-style New.TLabel
grid .c.t
q3)text
命令没有相应的ttk小部件(列表框也没有)。