wxPython的控制问题,从迁移赢MAC

问题描述:

时,我有一个Python(2.7)/上窗户,我试图迁移到Mac,但我遇到了一些问题,开发的wxPython程序。wxPython的控制问题,从迁移赢MAC

我有问题的位由两个面板:

面板A由含有键=值对,并与用户编辑禁用一个树的控制。

图B由一组不同类型的(filePicker,textCtrl,valueCtrl,选择,复选框,组合框,和spinEdit),所有这些的最初被禁用

的控制的,当用户选择一个树节点的程序检查密钥并确定应使用面板B上的哪个控件编辑树节点的值。然后,面板A使用pubsub将相关信息发送到面板B,该面板初始化并启用相关控件。面板B上的每个控件都有一个EVT_KILL_FOCUS事件,因此当用户离开控件时,控件值将使用pubsub发送回面板A,并更新树节点的值并禁用面板B上的编辑控件。这在Windows上工作正常。

在Mac上,我有以下问题:

  1. 的filepicker和spinCtrl不能被禁用 - 这可能会导致不正确的信息被发送回TREECTRL如果这些控制不当接收焦点

  2. spinctrl,选择,复选框和comboctrl似乎不是触发EVT_KILL_FOCUS事件,因此没有信息被发回到treeCtrl。我通过绑定EVT_CHOICE来解决这个问题。对其他控件使用非焦点事件不起作用,并且会产生不希望的行为。

所以我的问题是:

1:是否有可能禁用filepicker和spinCtrl上OSX?

2:有没有使用spinctrl,选择复选框在Mac上杀焦点事件,并comboctrl控制的方法吗?

3:如果填充的焦点事件不能用,有没有被触发后,编辑完成后,每个这些控件的一个替代的事件吗?

感谢 罗布

  1. 您正在使用哪个的wxPython的版本?使用当前版本禁用这些小部件似乎对我来说工作正常。

  2. 由于某种原因,苹果公司认为不要将键盘焦点放在某些类型的控件上是一个好主意,因为显然没有人会想用鼠标或触控板之外的任何东西来使用它们。所以如果小部件永远不会获得焦点,那么它永远不会失去它,所以它也不会有任何EVT_KILL_FOCUS。您可以通过“全键盘控制”设置为“所有控件”

+0

在Mac(OS 10.9),我正在运行的Python 2.9在系统偏好设置键盘面板改变这一点,和wxPython的2.9.2.4-1 (enthought冠1.5.2)。 – RJCL 2015-02-25 21:05:18

+0

在Mac(OS 10.9)上,我正在运行python 2.9和wxpython 2.9.2。4-1(热衷于冠层1.5.2)。我已将键盘设置为“所有控件”,但似乎没有什么区别。实际上,控制在初始化过程中被禁用,虽然它们在第一次显示面板时不会被禁用,也不会在焦点丢失后被禁用 – RJCL 2015-02-25 21:42:59