2016-04-26 109 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不是一个容器,所以它不能有子窗口小部件。

实现您在屏幕截图中看到的适当方式是使用单独的容器并适当地设置它的样式。