【问题标题】:Setting Widget Focus in Gtkada在 Gtkada 中设置小部件焦点
【发布时间】:2016-02-02 10:45:11
【问题描述】:

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

提姆

【问题讨论】:

  • 在此处发布显示此问题的最简单的可能代码...
  • 从那以后开过一次会,并决定我们将在单击按钮时进行整个验证检查。无需焦点转移/设置。谢谢!

标签: gtk ada


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答。不幸的是,我自己得出了大多数这些结论,但我非常有限,因为我可以通过 30 年的形式惯例得出结论。将要使用这个模拟器面板的人期望我制作的和以前的模拟面板之间存在一定的相关性。我相信我们现在要进行“一体式”“发送”按钮单击有效性检查和对话框,其中包含一条消息,告诉用户哪些字段是错误的。不会发生字段焦点更改,因此不会乱搞用户期望光标所在的位置。再次感谢
猜你喜欢
  • 2014-04-05
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2011-09-09
相关资源
最近更新 更多