1

我将 LTK 用于 Common Lisp 中的基本窗口。我想创建一个方形按钮,但事实证明高度无法更改。这是代码的相关部分:

(let ((tile (make-instance 'button
                           :width 20
                           :height 20))))

我收到一个错误:

Invalid initialization argument:
  :HEIGHT
in call for class #<STANDARD-CLASS LTK:BUTTON>.
See also:
  The ANSI Standard, Section 7.1.2
  [Condition of type INITARG-ERROR]

LTK 文档中,高度被列为可配置按钮。安装有问题还是已知错误或什么?

4

1 回答 1

2

我认为它在 ltk 方面丢失了。在M-.Slime 中,我转到按钮的定义:

(defargs button (widget)
  command
  compound
  default
  image
  state
  textvariable
  underline
  width)

确实没有height,也不是来自widget

我问了 nodgui(带有语法糖和更多元小部件的 ltk 叉子),因为维护者真的很好:https ://notabug.org/cage/nodgui/issues/6

他的回答:


nodgui 仅支持使用 'ttk' 主题引擎的小部件:

https://www.tcl.tk/man/tcl8.6/TkCmd/ttk_intro.htm

ttk::button 的文档:

https://www.tcl.tk/man/tcl8.6/TkCmd/ttk_button.htm

没有显示高度参数(如果我错了,请纠正我)

(您是否有机会查看https://www.tcl.tk/man/tcl8.6/TkCmd/button.htm?这是小部件的非 ttk 版本,不受支持)

可能您可以使用 frame 和 sticky 属性来修改按钮的几何形状(从未尝试过),而且我不知道以像素为单位指定按钮大小的方法。

希望这会有所帮助!:)

ps: 可能需要指出 LTK 文档在小部件部分已过时。


其他需要考虑的信息:https ://mailman.common-lisp.net/pipermail/ltk-user/2016-June/000625.html

最高 8.4 的 Tcl/Tk 包括允许设置按钮的字体。从 8.5 开始有 ttk 小部件集,它在某些时候成为 ltk 的默认设置。ttk 小部件集使用主题引擎来确定小部件的许多渲染参数,以实现“原生”​​外观。这意味着许多旧的小部件选项已被删除。您可以在此处找到小部件的文档:https ://www.tcl.tk/man/tcl8.6/TkCmd/ttk_button.htm

如果您将 :tk84 推送到features,您将获得旧样式的小部件,否则您当然可以创建/修改 ttk 主题,这也应该使您能够配置字体。对于这样的错误报告,如果您包含有关问题显示的操作系统、您正在使用 Ltk 的 lisp 以及在这种情况下为屏幕截图的信息,这也将非常有帮助。

于 2019-03-29T11:41:07.380 回答