【问题标题】:GTK - How to update gtktextview/gtkentry? #CGTK - 如何更新 gtktextview/gtkentry? #C
【发布时间】:2012-09-28 17:04:08
【问题描述】:

我正在为 CubeSat 创建一个基本的地面控制站,将其分为两部分:命令(没有问题)和遥测。我正在使用 C 代码和 GTK;在遥测窗口中,每次收到遥测数据包时,我都需要显示一些信息,因此我尝试对每个信息使用 gtkview/gtkentry,但我不知道如何更新其中显示的消息。

特别是一个例子:

//View PACKET NUMBER    
 view = gtk_text_view_new();
 frame = gtk_frame_new("Packet number");    
 gtk_container_add(GTK_CONTAINER(frame), view);
 gtk_text_view_set_editable(GTK_TEXT_VIEW(view),FALSE);
 gtk_table_attach(GTK_TABLE(table2),frame,0,1,0,1,GTK_FILL,GTK_FILL,5,5);
 buff = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
 gtk_text_buffer_get_iter_at_offset(buff, &iter, 0);
 gtk_text_buffer_insert(buff, &iter,"waiting", -1);

所以,首先是文本“WAITING”,然后当收到一个数据包时,我想更新该文本:我该怎么做?

我尝试重复此代码,但使用引用“数据包号”的变量更改“等待”,但我获得了 核心转储

我也试过这段代码,但我总是遇到同样的问题。

viewprova = gtk_entry_new();
frameprova = gtk_frame_new("Packet number");
gtk_container_add(GTK_CONTAINER(frameprova), viewprova);
gtk_entry_set_editable(GTK_ENTRY(viewprova),FALSE);
gtk_table_attach(GTK_TABLE(table2),frameprova,0,1,0,1,GTK_FILL,GTK_FILL,5,5);
gtk_entry_set_text(GTK_ENTRY(viewprova),"waiting");



frameprova = gtk_frame_new("Packet number");    
viewprova = gtk_label_new ("waiting");
gtk_container_add(GTK_CONTAINER(frameprova), viewprova);
gtk_table_attach(GTK_TABLE(table2),frameprova,0,1,0,1,GTK_FILL,GTK_FILL,5,5);   

感谢您的帮助!

【问题讨论】:

  • 您尝试“重复此代码”是什么意思?您当然没有创建一个全新的 Frame+TextView 只是为了更新文本。您能否发布您用于更新 TextView 的代码?
  • 要更新 TextView 我使用了相同的代码...我知道这是问题所在,但我不知道如何正确操作!周期 1 = 我创建带有“等待”文本的文本视图 周期 2 = 我如何更新它?我尝试过使用相同的代码(这是我上面报告的第一个代码,但“等待”更改为我要显示的文本),但它不起作用(核心转储)

标签: gtk gtkentry gtktextview


【解决方案1】:

gtk_label_new() 这样接受C 字符串的函数不能取整数,C 函数不是多态的。您需要构建一个字符串表示并传递它,例如使用snprintf() 将数字格式化为字符串缓冲区。

【讨论】:

  • 没关系,但我也尝试用另一个文本(尝试)更改第一个文本(等待),但它总是给我核心转储。
【解决方案2】:

好的,如果我理解正确,您知道如何设置文本显示小部件,但不知道如何用新内容填充它们,对吗?看看你的代码,看看你在做什么。首先,您正在创建一个文本小部件。然后用初始文本填充它。第二部分是您重复的部分:

如果是GtkEntrygtk_entry_set_text(GTK_ENTRY(viewprova), "My new text");

如果是GtkTextView(实际上你使用的是底层TextBuffer),gtk_text_buffer_set_text(buff, "My new text", -1);

【讨论】:

  • 谢谢,我试试这个!可能我关闭了我创建界面的部分,所以我无法修改它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多