显示和隐藏搜索条目-Gtk 背景

显示和隐藏搜索条目-Gtk 背景,gtk,vala,genie,Gtk,Vala,Genie,这是一个练习的一部分,我正在用精灵创建一个小文本编辑器。到目前为止,这个应用程序运行得很好 目标 我在创建一个搜索输入框时陷入了困境,单击标题栏上的搜索按钮就会显示该框 代码 问题 我的方法是创建一个小函数(show_search),以实现搜索条目的显示/隐藏。程序编译正常,但在执行时出现错误: (text_editor-exercise_7_1:9732): Gtk-CRITICAL **: gtk_revealer_set_reveal_child: assertion 'GTK_IS_RE

这是一个练习的一部分,我正在用精灵创建一个小文本编辑器。到目前为止,这个应用程序运行得很好

目标 我在创建一个搜索输入框时陷入了困境,单击标题栏上的搜索按钮就会显示该框

代码 问题 我的方法是创建一个小函数(show_search),以实现搜索条目的显示/隐藏。程序编译正常,但在执行时出现错误:

(text_editor-exercise_7_1:9732): Gtk-CRITICAL **: gtk_revealer_set_reveal_child: assertion 'GTK_IS_REVEALER (revealer)' failed

(text_editor-exercise_7_1:9732): Gtk-CRITICAL **: gtk_revealer_set_reveal_child: assertion 'GTK_IS_REVEALER (revealer)' failed

(text_editor-exercise_7_1:9732): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(text_editor-exercise_7_1:9732): Gtk-CRITICAL **: gtk_widget_grab_focus: assertion 'GTK_IS_WIDGET (widget)' failed

单击“搜索”按钮时会发生这种情况。有人能告诉我这个代码中的错误吗?这个错误在抱怨什么?GTK_WIDGET断言失败了吗?

我提取了代码中有问题的部分:

类应用:Gtk.Window
_搜索\输入\展示者:Gtk.revealer
_搜索按钮探宝器:Gtk.revealer
构造()
_搜索\输入\展示器:Gtk.revealer=新的Gtk.revealer();
_搜索按钮显示器:Gtk.revealer=new Gtk.revealer();
def show_search()
_搜索\u按钮\u revealer.reveal\u child=false
_search\u entry\u revealer.reveal\u child=true
您正在类中声明Gtk.Revealer类型的两个属性

然后在构造方法中声明两个Gtk.Revealer类型的局部变量

因此,属性从未设置为任何值

然后,对属性的访问会产生您正在得到的错误

解决方案很简单,您必须在构造方法的赋值中保留类型,以便声明局部变量,而是使用属性(如您可能希望的那样):

类应用:Gtk.Window
_搜索\输入\展示者:Gtk.revealer
_搜索按钮探宝器:Gtk.revealer
构造()
//这里没有类型注释,因此没有声明局部变量
_search_entry_revealer=新的Gtk.revealer();
_搜索按钮显示器=新的Gtk.revealer();
def show_search()
_搜索\u按钮\u revealer.reveal\u child=false
_search\u entry\u revealer.reveal\u child=true

工作起来很有魅力,詹斯。因此,在类中声明变量或属性时使用相同的语法。。很高兴知道。谢谢。值得一提的是,它的标准GTK+控制是。
(text_editor-exercise_7_1:9732): Gtk-CRITICAL **: gtk_revealer_set_reveal_child: assertion 'GTK_IS_REVEALER (revealer)' failed

(text_editor-exercise_7_1:9732): Gtk-CRITICAL **: gtk_revealer_set_reveal_child: assertion 'GTK_IS_REVEALER (revealer)' failed

(text_editor-exercise_7_1:9732): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(text_editor-exercise_7_1:9732): Gtk-CRITICAL **: gtk_widget_grab_focus: assertion 'GTK_IS_WIDGET (widget)' failed