【问题标题】:Embedding other widgets in a GTK+ text entry在 GTK+ 文本条目中嵌入其他小部件
【发布时间】:2016-04-26 23:56:40
【问题描述】:

我想在 GTK+ 3 文本输入框的一端嵌入另一个小部件,这有点像许多浏览器对搜索或协议安全“芯片”所做的那样:

我知道我可以在文本条目上设置一个图标

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

即使我将自己的GdkPixbuf 传递给set_icon_from_pixbuf,当我想要一些任意大小(至少水平方向)取决于“芯片”内容时,这仍然会限制我的图标大小。

我还尝试使用set_margin_left 将文本“分流”,但这会将整个输入框的左边缘移动,而不是框内的文本。

在文本条目中嵌入一些其他 GTK+ 小部件(希望具有任何复杂性,以便我可以使芯片更具交互性)的有效方法是什么?

【问题讨论】:

  • 你应该看看它是如何在 libgd 的GdTaggedEntry 中完成的。这用于 nautilus 3.20 中的新搜索。您也可以尝试使用它,但您必须先编译它。为此,gnome-music 的源代码可能很有趣,因为它也使用 libgd 并且是用 python 编写的。
  • 您还在寻求帮助还是已经解决了?

标签: textbox icons gtk pygtk gtk3


【解决方案1】:

GtkEntry 不是一个容器,所以它不能有子部件。

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

【讨论】:

    【解决方案2】:

    您是否考虑过将条目放在框架内,并重新设计内容以使其看起来像是在条目内?然后,您可以使用标准容器将任何小部件放在您想要的文本输入空间旁边。

    缺点是单击“图标”不会自动聚焦条目,但它使该操作完全可配置。

    【讨论】:

    • 我已经考虑过了,但还没有打折,但是“伪造”了一个看起来和感觉像文本条目的小部件,而实际上它只需要在左侧多留一点空间的文字似乎有点矫枉过正。
    • 不是真的;只需使用gtk_style_context_add_class() 添加entry 类。 (这就是 ebassi 的建议。)我可能会写一个快速的示例程序来稍后演示。
    猜你喜欢
    • 2021-12-11
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多