Высота кнопки LTK не настраивается

Я использую LTK для основных окон в Common Lisp. Я хочу создать квадратную кнопку, но оказывается, что высота не может быть изменена. Вот соответствующая часть кода:

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

Я получаю сообщение об ошибке:

Неверный аргумент инициализации::HEIGHT в вызове для класса #. См. Также: Стандарт ANSI, раздел 7.1.2 [Условие типа INITARG-ERROR].

В документации LTK высота указана как настраиваемая для кнопок. Что-то не так с установкой или это известная ошибка или что?

1 ответ

Настройка осуществляется через configure функционировать в соответствии с гл. 3.14 документации.

Я думаю, что это отсутствует на стороне ltk. С M-. в слизи я иду к определению кнопки:

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

Здесь нет height действительно, и это не из widget,

Я спросил об nodgui (ltk fork с синтаксическим сахаром и большим количеством мета-виджетов), потому что сопровождающий действительно хорош: 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

Tcl / Tk до 8.4, включая разрешенный шрифт для кнопок. С 8.5 был набор виджетов ttk, который в какой-то момент стал по умолчанию для ltk. Набор виджетов ttk использует движок тем, чтобы определить многие параметры рендеринга для виджетов для достижения "родного" вида. Это означает, что многие старые опции для виджетов были удалены. Вы можете найти документацию для виджета здесь: https://www.tcl.tk/man/tcl8.6/TkCmd/ttk_button.htm

Если вы нажмете:tk84 на функции, вы получите виджеты старого стиля, в противном случае вы, конечно, можете создавать / изменять темы ttk, что также даст вам возможность настраивать шрифты. С такими отчетами об ошибках также было бы очень полезно, если бы вы включили информацию об операционной системе, которая показывает проблему, список, с которым вы используете Ltk, и в данном случае снимок экрана.

Другие вопросы по тегам