2013-09-29 8 views
0

Как установить максимальный размер окна окна LTK?установить максимальный размер окна

(ql:quickload "ltk") 

(defpackage :pub-quiz 
    (:use :ltk :cl)) 

(in-package :pub-quiz) 

(defun pub-quiz-window() 
    (with-ltk() 
    (let* ((f (make-instance 'frame :relief :groove :height 500 :width 300)) 
      (pub (make-instance 'label :master f :text "Pub Quiz")) 
      (outtext (make-instance 'text :font "monospaced" :wrap :word)) 
      (tf (make-instance 'text :font "monospaced"))) 
     (pack f) 
     (pack pub :side :left) 
     (pack outtext :ipady 100) 
     (pack tf)))) 

Если установить размер кадра к высоте и ширине, как в приведенном выше примере кода, мое окно WM не уважает эти ценности вообще.

Тк документы имеют этот

wm maxsize .window 500 500 

, но я не знаю, как перевести это в чем-то ЛТК понимает.

+1

Я взял на себя смелость форматировать свой код, так как было трудно определить, где закончились переменные' let' и где началось тело. Можете ли вы опубликовать дополнительный код, который кому-то понадобится, чтобы проверить это? Например, определения '* questions *' и 'format-quiz'. Кроме того, обратите внимание, что это определение должно быть в контексте, где используется пакет 'LTK' (например,' with-ltk', 'pack',' frame', 'label' и т. Д., Все находятся в' LTK'. –

+0

Спасибо, я добавил определение пакета. – martin

ответ

1

Я не использовал ЛТК, поэтому не могу претендовать на то, как это предполагается; Я просто отвечаю на основании того, что я нашел в Интернете. LTK manual упоминает в разделе 3.7, что существует maxsize функция:

(maxsize toplevel width height) 

указан максимальный размер окна в пикселях.

Вызов (maxsize f 500 500) не работает. Реализация maxsize является:

(defgeneric maxsize (widget x y)) 
(defmethod maxsize ((w widget) x y) 
    (format-wish "wm maxsize ~a ~a ~a" (widget-path w) (tk-number x) (tk-number y)) 
    w) 

номер перевода работает просто отлично, я думаю (ltk::tk-number 500) => 500. Тем не менее, (widget-path f), для f в вашем коде возвращается .wc, а не .window, как показывает фрагмент TK, который вы опубликовали. Вы можете запустить этот код непосредственно

(format-wish "wm maxsize .window 500 500") 

но вызывает ошибку тоже:

Tcl/Tk error: bad window path name ".window" 

Я не уверен, что Элемент путь будет работать для вас в этом случае, но это, кажется, как только вы Вы обнаружили, что maxsize сделает все, что вам нужно. Существует toplevel класса, и вызов maxsize с экземплярами, кажется, работает, так что, возможно, вы должны изучить

(let* ((f (make-instance 'toplevel :relief :groove :height 500 :width 300)) 
     ...) 
    ... 
    (maxsize f 500 500)) 

Игры вокруг с ним, я могу рода получить, что для работы, хотя это «Pub Quiz «Кажется, что ярлык выглядит как отдельное окно ...

Смежные вопросы