尝试同步GTK条目时无限循环

时间:2014-08-12 19:47:08

标签: c gtk

我正在写一个"转换器" GTK中的程序,我有2 gtk_entry s和(理想情况下)编辑一个会改变另一个。

然而,我发现自己处于一个无限循环中 - 改变另一个改变另一个改变另一个改变另一个改变另一个循环......

我猜这是因为我正在使用changed信号,当我真的需要某种"用户编辑的这个字段"信号而不是"计算机编辑的这个字段"。

我的代码目前看起来像这样:

year= gtk_entry_new ();
g_signal_connect (G_OBJECT (year), "changed",
                  G_CALLBACK (Update), (gpointer) "one");

(我尝试使用"一个"和#34;两个"表示"转换到这个方向" vs"转换到那个方向"但是它没有帮助。)

和我的"更新"功能以

结尾
gtk_entry_set_text( GTK_ENTRY (day), s);

是否有我应该使用的信号指定"当用户更改此字段中的文本时采取此操作,但是当计算机更改此字段中的文本时#34; ?

我知道我可以制作一对"激活"按钮,每个方向一个,但我试图时髦和自动更新。

2 个答案:

答案 0 :(得分:1)

您要求的信号不存在,但这应该有效:

g_signal_handlers_block_by_func (day, day_changed_cb, userdata_of_day_change_cb);
gtk_entry_set_text (GTK_ENTRY (day), s);
g_signal_handlers_unblock_by_func (day, day_changed_cb, userdata_of_day_change_cb);

答案 1 :(得分:0)

我很感谢所有的建议。我将更加符合我的技能,朝着不同的方向前进。感谢。

因为我只是简单地看到问题就让我很烦恼。没关系,我明白了这个问题" ...

我创建了一对单选按钮,根据选择的按钮,我从另一组字段更新一组字段。为了使它更加明显,我决定设置一组"条目"和一组"标签。"当我更新A面时,我隐藏了B面条目并显示了B面标签。当我更新B面时,我隐藏了A面条目并显示了A面标签,并隐藏了B面标签并显示了B面条目。

我希望我知道如何关闭"我自己的问题。