Bên cạnh đã được đề cập LTK (luôn làm việc tốt cho tôi), tôi cũng thích Cells-Gtk, vì theo tôi, cách tiếp cận tốt đẹp để viết mã GUI là của Tilton là Cells. (Tuy nhiên, LTK có thể dễ dàng hơn để bắt đầu.)
Ví dụ, đây là một số mã cho bộ chuyển đổi đơn giản Fahrenheit/Celsius (và ngược lại) tôi đã viết khi tôi mới bắt đầu với Cells-Gtk:
(defun fahrenheit->celsius (fahrenheit/string)
(princ-to-string (handler-case
(* (- (read-from-string fahrenheit/string nil) 32) 5/9)
(error() "NaN"))))
(defun celsius->fahrenheit (celsius/string)
(princ-to-string (handler-case
(+ (* (read-from-string celsius/string nil) 9/5) 32)
(error() "NaN"))))
(defmd celsius-fahrenheit-converter (gtk-app)
:title "°C <-> °F"
:position :center
:kids
(kids-list?
(mk-vbox
:kids
(kids-list?
(mk-hbox
:kids
(kids-list?
(mk-entry :md-name :celsius
:init "0"
:text (c? (fahrenheit->celsius (widget-value :fahrenheit))))
(mk-label :text "°C")))
(mk-hbox
:kids
(kids-list?
(mk-entry :md-name :fahrenheit
:text (c? (celsius->fahrenheit (widget-value :celsius))))
(mk-label :text "°F")))))))
Không có nút "Tính toán" hoặc thứ gì đó tương tự - chỉ cần thay đổi giá trị của một trường nhập và trường khác sẽ được cập nhật nhanh chóng. Như bạn có thể thấy, Các ô xử lý các thay đổi trạng thái của các tiện ích theo cách tự động - chỉ phải có "đường ống dẫn" chính xác.
(mã Đây là một vài tuổi, và tôi không có cài đặt tế bào-Gtk để kiểm tra nó ATM, nhưng nó được sử dụng để hoạt động đúng khi tôi đã viết nó.)
Một tìm kiếm web cho 'toolkit gui lisp chung 'dường như có nhiều thứ, vì vậy tôi nghĩ rằng tính khả thi được đảm bảo. – phils