2016-04-26 106 views
0

我想嵌入其他窗口的GTK + 3文本輸入框的一端,有點像很多瀏覽器做搜索或協議保障「籌碼」:Left hand side of Chromium search bar在GTK +的文本輸入嵌入其他部件

我知道我可以在文本輸入設置的圖標與

entry = Gtk.Entry() 
entry.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, icon_name) 
取決於

即使我通過我自己的GdkPixbufset_icon_from_pixbuf這仍然限制了我的圖標大小,當我想一些任意尺寸(至少水平)的「芯片「內容。

我還試圖「分流」的文本在具有set_margin_left,但在移動的整個輸入框的左邊緣,而不是在框中的文本。

在文本條目中嵌入一些其他GTK +小部件(希望任何複雜性,所以我可以使芯片更具交互性)是一種有效的方法?

+1

你應該看看它是如何在libgd的[GdTaggedEntry](https://git.gnome.org/browse/libgd/tree/libgd/gd-tagged-entry.c)中完成的。這用於nautilus 3.20中的新搜索。你也可以嘗試使用它,但你必須先編譯它。爲此,[gnome-music](https://git.gnome.org/browse/gnome-music/tree)的源代碼可能很有趣,因爲它也使用libgd,並且是用python編寫的。 – elya5

+0

你仍然在尋找這方面的幫助,或者你想通了嗎? – andlabs

回答

1

你有沒有考慮把條目放在一個框架中,並重新設置東西使它看起來像是在一個條目中?然後,您可以使用標準容器將所需的任何小部件放在文本輸入空間旁邊。

不足之處在於,點擊「圖標」不會自動關注條目,但會使該操作完全可配置。

+0

我已經考慮過了,並且還沒有打折,但是「僞裝」一個看起來像一個文本條目的小部件,當它實際上只需要文本左側的額外空間看起來像是矯枉過正。 – Inductiveload

+2

不是真的;只需使用'gtk_style_context_add_class()'添加'entry'類。 (這就是ebassi的建議。)我可能會寫一個快速示例程序以供稍後演示。 – andlabs

2

GtkEntry不是一個容器,所以它不能有子窗口小部件。

實現您在屏幕截圖中看到的適當方式是使用單獨的容器並適當地設置它的樣式。