【问题标题】:Gtk Widget add_child fails with errorGtk Widget add_child 失败并出现错误
【发布时间】:2017-04-24 01:15:08
【问题描述】:

我正在尝试创建自定义 Gtk 文本条目。基本思想是在文本条目中放置一个按钮。这是我完整代码的缩短版本:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
builder = Gtk.Builder()
button = Gtk.Button('button')
entry = Gtk.Entry()
entry.add_child(builder, button, "button")

按钮未显示,并因错误而失败:

(pygtk_foobar.py:26622): Gtk-CRITICAL **: gtk_buildable_add_child: 
assertion 'iface->add_child != NULL' failed

有什么建议吗?

【问题讨论】:

    标签: python-2.7 gtk3 gtkentry


    【解决方案1】:

    GtkEntry 小部件不是 GtkContainer,因此它不能添加或删除子小部件。

    只有从 GtkContainer 类继承的小部件才能在 GTK+ 中拥有子级。

    如果您想在文本条目旁边放置一个按钮,您应该将两个小部件打包到一个容器中,例如GtkBox,例如:

    box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=2)
    entry = Gtk.Entry()
    button = Gtk.Button(label='button', hexpand=True)
    box.add(entry)
    box.add(button)
    box.show_all()
    

    这将创建一个带有条目和按钮的框。

    【讨论】:

    • 我已经尝试过了,并将其作为最后的手段。我不喜欢它的是按钮出现在外部条目。我想要条目内的按钮。就像旋转按钮一样,但旋转按钮不起作用,因为我需要输入自定义格式的文本。如果,是的,如果输入和输出适用于 Python 中的旋转按钮,我的问题就会得到解决。我想我会继续寻找。
    • 对@ebassi 建议的补充是将 linked 样式类添加到盒子中,这将“合并”两个小部件并给人一种同质感,如果我们可以对这两个小部件调用它。另一种解决方法是使用 gtk 条目上可用的主要和次要“可点击”图标。
    • 谢谢大家。我开始使用 CSS 在 GtkBox 中组合多个小部件。我相信这将完美地工作,因为理论上我可以“合并”多个条目以显示为一个条目,同时将文本分成块。顺便说一句,我正在创建一个专门的日期时间编辑小部件。我知道,这很愚蠢,但是在这种情况下,我想要一个不会让用户输入错误值的漂亮显示。
    • @JoséFonte。您介意详细说明什么是链接样式类吗?
    • 检查this link上的链接按钮。
    猜你喜欢
    • 2018-02-24
    • 2012-09-24
    • 1970-01-01
    • 2013-07-18
    • 2021-10-12
    • 2020-10-23
    • 2020-07-20
    • 2011-05-25
    • 2016-02-20
    相关资源
    最近更新 更多