Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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
C 将类似bash的小部件插入gtk_C_User Interface_Gtk_Glade - Fatal编程技术网

C 将类似bash的小部件插入gtk

C 将类似bash的小部件插入gtk,c,user-interface,gtk,glade,C,User Interface,Gtk,Glade,当你用c写一个程序,它有很多printf用于很多目的:调试,信息,等等。我想在gtk中做一些类似的事情,有一些小部件可以显示所有printf消息,我通常在普通c程序中会做的 谢谢 ---更新--- 我正按照托马托的建议使用vte。虽然出现了一些问题。 我正在使用glade-3,当文件glade打开时,vte小部件没有显示。我注意到打开时会显示很多警告和两个严重错误。其中一个关键因素是 Unable to load module 'vte' from any search paths 我通过ap

当你用c写一个程序,它有很多printf用于很多目的:调试,信息,等等。我想在gtk中做一些类似的事情,有一些小部件可以显示所有printf消息,我通常在普通c程序中会做的

谢谢

---更新--- 我正按照托马托的建议使用vte。虽然出现了一些问题。 我正在使用glade-3,当文件glade打开时,vte小部件没有显示。我注意到打开时会显示很多警告和两个严重错误。其中一个关键因素是

Unable to load module 'vte' from any search paths
我通过apt get安装了libvte dev,并且知道我在小部件调色板中看到了它

您可以使用asprintf()作为GNU扩展来执行格式化输出,格式化输出存储在新分配的内存中,以后必须释放

char* str;
asprintf(&str, "It is a number %d\n", 1);
//...
free(str);
相反,您可以使用snprintf(),它不为您分配任何内容,只为您填充一个字符数组(作为格式化输出)

您还可以使用g_string_printf(),这是一个glib函数,但它将格式化的输出存储到GString变量

GString str;
g_string_printf(&str, "It is number %d\n", 1);
//...
g_string_free(&str, TRUE);
当您将字符串作为格式化输出时,您可以将其用作任何GTK小部件的文本。

您可以使用asprintf()作为GNU扩展来执行格式化输出,格式化输出存储在新分配的内存中,以后必须释放

char* str;
asprintf(&str, "It is a number %d\n", 1);
//...
free(str);
相反,您可以使用snprintf(),它不为您分配任何内容,只为您填充一个字符数组(作为格式化输出)

您还可以使用g_string_printf(),这是一个glib函数,但它将格式化的输出存储到GString变量

GString str;
g_string_printf(&str, "It is number %d\n", 1);
//...
g_string_free(&str, TRUE);
当您将字符串作为格式化输出时,您可以将其用作任何GTK小部件的文本。

您可以创建或使用

将此文本视图添加到父窗口。您可以决定添加哪些其他小部件。(可能是滚动窗口,然后是文本视图)

每次要显示日志时,使用api
gtk_text_view_set_buffer
将文本显示在窗口上。

您可以创建或使用

将此文本视图添加到父窗口。您可以决定添加哪些其他小部件。(可能是滚动窗口,然后是文本视图)


每次需要显示日志时,使用api
gtk_text_view_set_buffer
将文本显示在窗口上。

您可以使用VTE,一个终端仿真器小部件。我不确定,但我认为您可以使用将程序的标准输出重定向到小部件。

您可以使用VTE,一个终端模拟器小部件。我不确定,但我认为您可以使用将程序的
标准输出重定向到小部件。

您只需使用GtkTextView,并使用以下功能重定向您的登录:

  • 对于g_message()/g_warning()/等(通过g_log()的所有内容)
  • g_set_print_handler()(用于g_print())
  • g_set_printerr_handler()(用于g_printerr())
不幸的是,简单的printf()无法轻松重定向(但是g_print()是它的一个很好的替代品)


PS:对不起,我只能为您(新用户)粘贴一个链接。

您只需使用GtkTextView并使用以下功能重定向您的登录:

  • 对于g_message()/g_warning()/等(通过g_log()的所有内容)
  • g_set_print_handler()(用于g_print())
  • g_set_printerr_handler()(用于g_printerr())
不幸的是,简单的printf()无法轻松重定向(但是g_print()是它的一个很好的替代品)


PS:对不起,我只能为您(新用户)粘贴一个链接。

这并不能真正回答问题,他在问如何创建一个小部件,用于向用户显示此日志信息。这并不能真正回答问题,他问如何创建一个小部件,可以用来向用户显示日志信息。我在glade中找不到vte。。。帮助?我在林间空地找不到vte。。。帮忙?