2016-02-02 77 views
0

我正在尝试在Gtkada中创建一个简单的测试程序,以便在离开特定文本框时调出对话框。我已经管理了这部分,但在按下对话框的“确定”按钮时,将焦点重置回原始文本框时出现问题。 一般的想法是用户在文本框中输入内容,当他们点击/选项卡(焦点输出事件)时,会进行一些简单的字母数字验证。如果验证失败,则用户使用对话框发出警告,并将焦点返回到他们输入错误数据的文本框中。 我之后的所有内容都是一个简单的示例,说明如何在关闭最初调用的文本框之外的对话框时将焦点设置回文本框。在Gtkada ...我使用Gtkada 2.2版本。我无法更改Gtkada的版本,或者使用不同的程序或语言! 非常感谢!在Gtkada中设置窗口焦点

+0

发布最简单可能的代码在这里显示此问题... –

+0

已经有一次会议,并且已经决定我们将按照点击按钮完成验证检查。不需要重点移动/设置。谢谢! –

回答

1

最完美的解决方案,GUI,明智的,是做在每个输入字段生成leave_event验证,并且如果失败显示错误消息(在红色或一些这样的)旁边的场。但不要显示对话框或将焦点强制到特定字段,这会干扰用户正在尝试执行的操作(想象一下:我输入了不正确的电子邮件地址,按Tab键,出现我没有阅读的对话框(如大多数用户),开始为下一个字段输入我的名字,但由于焦点回到了电子邮件地址,所以我没有重写那个,并丢失了我以前的输入)。

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

+0

感谢您的回答。不幸的是,我自己会得出大部分结论,但我对30年来形式约定所能产生的结果相当有限。那些将要使用这个模拟器面板的人期望我产生的和以前的Sim面板之间有一定的相关性。我相信我们现在要进行'all in one''发送'按钮单击有效性检查和对话框,并显示一条消息,告诉用户哪些字段是错误的。不会发生场焦点变化,因此不会出现用户期望光标所在的位置。再次感谢 –