Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface GTK按钮标签更新_User Interface_Gtk_Glade_Gtkbutton - Fatal编程技术网

User interface GTK按钮标签更新

User interface GTK按钮标签更新,user-interface,gtk,glade,gtkbutton,User Interface,Gtk,Glade,Gtkbutton,我正在使用C、Glade和Gtk设计GUI 我在glade中配置了一些信号来更新各种小部件的标签,主要是GtkButton和GtkLabel。整体功能是,当单击某个单选按钮时,所有按钮和标签都会相应更改(语言选择) 我正在widgets _draw()函数中使用函数gtk_label_set_label(…),它可以按预期工作(文本更改,g_打印发生(一次)) 但是,当我尝试从按钮执行相同操作时 gboolean on_btnMyButton_draw(GtkButton *button, gp

我正在使用C、Glade和Gtk设计GUI

我在glade中配置了一些信号来更新各种小部件的标签,主要是GtkButton和GtkLabel。整体功能是,当单击某个单选按钮时,所有按钮和标签都会相应更改(语言选择)

我正在widgets _draw()函数中使用函数gtk_label_set_label(…),它可以按预期工作(文本更改,g_打印发生(一次))

但是,当我尝试从按钮执行相同操作时

gboolean on_btnMyButton_draw(GtkButton *button, gpointer *user_data) {
    gtk_button_set_label(button, "custom text");
    g_print("%s\n", "custom text");
    return FALSE;
}
文本不会更新,但会显示,g_print()语句将永远打印(就像绘图是递归地调用自己一样)

有趣的是,如果我将按钮代码从draw移动到click,它将按预期工作,但是,我需要GUI重新绘制它自己,因此单击时更新是不切实际的

  • 有没有办法使用_draw()来防止这种情况
  • 有更好的方法吗
  • 谢谢

    gboolean on_btnMyButton_draw(GtkButton *button, gpointer *user_data) {
        gtk_button_set_label(button, "custom text");
        g_print("%s\n", "custom text");
        return FALSE;
    }