Что я пытаюсь сделать: у меня есть уже существующая игра, в которой используется LTK для его пользовательский интерфейс. Игра содержит множество кнопок, холстов и окон. Я хотел бы получить доступ к графическому интерфейсу с удаленного компьютера через ltk-remote, как описано в разделе 7 связанного руководства.
Что я сделал: я быстро загрузил ltk-remote, запустил (with-remote-ltk 9898 form)
, форма была функцией запуска игры, затем запустил wish remote.tcl localhost 9898
в терминале. (Номер порта 9898 является произвольным.) Это привело к проблеме, описанной пользователем @Sim в этот вопрос, который я решил, используя их ответ. Это могло вызвать проблемы (как предполагает Сим).
Проблема: GUI запускается, но лишь частично реагирует на некоторые события. Самый простой изолированный эффект заключается в том, что когда событие предлагает открыть новое окно, оно не открывается. Если нужно открыть больше окон, откроются все, кроме первого. Это минимальный пример:
(ltk:with-remote-ltk 9898 nil
(let ((b (make-instance 'ltk:button)))
(setf (ltk:command b) #'(lambda ()
(make-instance 'ltk:toplevel :title "title 1")
(make-instance 'ltk:toplevel :title "title 2")
(make-instance 'ltk:toplevel :title "title 3")))
(ltk:grid b 0 0)))
При нажатии на кнопку открывается только заголовок 2 и заголовок 3.
Я не видел никаких свидетельств того, что кто-либо успешно использовал ltk-remote, и, таким образом, сама библиотека могла быть взломана. Может ли кто-нибудь поделиться своим опытом?
remote-client.tcl
в своем ответе на stackoverflow.com/a/68035159/124319, то всякий раз, когда я нажимаю на кнопка, появляются три окна верхнего уровня (sbcl, linux) - person coredump   schedule 18.06.2021remote-client.tcl
(модифицированный или нет) вместоremote.tcl
, события вообще не влияют на графический интерфейс. Вместо этого они просто печатаются в терминале, из которого я его запускаю. Если я изменюremote-client.tcl
, а затем запущуremote.tcl
, рассматриваемая ошибка сохранится. - person Kotlopou   schedule 18.06.2021