【发布时间】:2015-02-24 17:35:32
【问题描述】:
我有一个在 windows 上开发的 python(2.7)/wxpython 程序,我正在尝试迁移到 mac,但遇到了一些问题。
我遇到的问题由两个面板组成:
面板 A 包含一个树形控件,其中包含键值对并禁用了用户编辑。
面板 B 包含一组不同类型的控件(filePicker、textCtrl、valueCtrl、choice、checkbox、comboBox 和 spinEdit),所有这些控件最初都是禁用的
当用户选择树节点时,程序会检查键并决定应该使用面板 B 上的哪个控件来编辑树节点的值。然后面板 A 使用 pubsub 将相关信息发送到面板 B,该 pubsub 初始化并启用相关控制。面板 B 上的每个控件都有一个 EVT_KILL_FOCUS 事件,因此当用户离开控件时,控件值会使用 pubsub 发送回面板 A,并且树节点的值会更新,并且面板 B 上的编辑控件会被禁用。这在 Windows 上运行良好。
在mac上我有以下问题:
文件选择器和 spinCtrl 不能被禁用 - 如果这些控件中的任何一个不恰当地获得焦点,这可能会导致不正确的信息被发送回 treeCtrl
spinctrl、choice、checkbox 和 comboctrl 似乎没有触发 EVT_KILL_FOCUS 事件,因此没有信息发送回 treeCtrl。我通过绑定 EVT_CHOICE 在选择控件上解决了这个问题。对其他控件使用非焦点事件效果不佳,并且会产生不良行为。
所以我的问题是:
1:是否可以在 OSX 上禁用文件选择器和 spinCtrl?
2:有没有办法在mac上使用spinctrl、choice、checkbox和comboctrl控件的kill focus事件?
3:如果无法使用填充焦点事件,是否会在编辑完成后触发每个控件的替代事件?
谢谢 抢
【问题讨论】: