在Gtkada中设置小部件焦点

时间:2016-02-02 10:45:11

标签: gtk ada

我正在尝试在Gtkada中创建一个简单的测试程序,在离开特定文本框时打开一个对话框。我已经管理了这部分,但在按下对话框的“确定”按钮时,将焦点重置回原始文本框时出现问题。 一般的想法是,用户在文本框中输入内容,当他们单击/选项卡开出(聚焦事件)时,会完成一些简单的字母数字验证。如果验证失败,则会使用Dialog警告用户,并将焦点返回到他们输入错误数据的文本框中。 我所关注的只是一个简单的例子,说明当你关闭单击最初调用的文本框的对话框时如何将焦点设置回文本框。在Gtkada ......我正在使用Gtkada的2.2版本。我无法更改Gtkada的版本,或使用其他程序或语言! 很有责任!

1 个答案:

答案 0 :(得分:1)

GUI方面最优雅的解决方案是在每个输入字段上对leave_event进行验证,如果失败则在字段旁边显示错误消息(红色或某些等)。但是不要显示对话框或强制将焦点强加到特定字段,这会干扰用户尝试做的事情(想象一下:我输入了错误的电子邮件地址,按Tab键,得到我不读的对话框(如大多数)用户),开始为下一个字段键入我的名字,但由于焦点回到了电子邮件地址,我没有覆盖那个,并且丢失了我以前的输入。)

如果你仍想抓住焦点,Gtk.Widget.Grab_Focus就是你想要的程序。