Добавить подсказки к записям в GTK ComboBox? - PullRequest
2 голосов
/ 14 марта 2012

Есть ли способ добавить всплывающие подсказки к отдельным записям в выпадающем списке?Мне бы хотелось, чтобы, когда выпадающий список был открыт (и только когда он открыт), и пользователь проводил мышью по одному из возможных вариантов выбора, дополнительная информация отображалась во всплывающей подсказке.

Кажется, что в выпадающем списке нет реальных виджетов, в которые можно было бы добавить всплывающие подсказки.Единственный способ сделать это, чтобы как-то поместить виджеты (например, метки) в записи в выпадающем списке?

1 Ответ

0 голосов
/ 16 марта 2012

Я думаю, что вы на правильном пути, поместив ярлыки в поле со списком и добавив всплывающие подсказки к ярлыкам. Вы можете создать собственное хранилище списков для комбинированного списка, содержащего метки. Это попытка сделать это, не в pygtk, а в guile-gnome (моя родная среда обитания, извините! Я могу попробовать переводить pygtk позже). Он запускается, но пока не правильно, метки не отображаются.

На самом деле, заставить gtkcombobox отображать виджеты (а не просто текст) кажется возможным, но трудным - см., Например, здесь . Может потребоваться пользовательский класс GtkCellRendererWidget, который не является частью базовой библиотеки.

(use-modules (oop goops)
         (gnome gtk))

(define w (make <gtk-window> #:title "combo demo"))
(connect w 'destroy (lambda args (gtk-main-quit)))

(define combo (make <gtk-combo-box>))
(define list-store (gtk-list-store-new `(,<gtk-label>)))
(set combo 'model list-store)
(define tooltips (gtk-tooltips-new))

(define (list-store-append-label-with-tooltip list-store text tip)
  (let ((label (make <gtk-label> #:label "hello")))
    (gtk-tooltips-set-tip tooltips label tip #f)
    (gtk-list-store-set-value
     list-store
     (gtk-list-store-append list-store)
     0
     label)))

(list-store-append-label-with-tooltip list-store "hello" "first word")
(list-store-append-label-with-tooltip list-store "world" "second word")

(add w combo)
(show-all w)

(gtk-main)
...