以下代碼示例在linux(ubuntu)和Windows XP下工作,但不在OSX下工作。wx.ListBox.HitTest在Mac上不工作
import wx
class frame(wx.Frame):
def __init__(self,p=None):
wx.Frame.__init__(self,p)
self.box = wx.ListBox(self)
self.box.AppendItems(["Zero","One","Two","Three","Four","Five","Six"])
self.box.Bind(wx.EVT_MOUSE_EVENTS,self.onMouse)
def onMouse(self,evt):
pos = evt.GetPosition()
print self.box.HitTest(pos)
evt.Skip()
class guiApp(wx.App):
def __init__(self,redirect=False):
wx.App.__init__(self,redirect)
def OnInit(self):
f = frame()
f.Show()
self.SetTopWindow(f)
return True
if __name__=="__main__":
app = guiApp()
app.MainLoop()
在Linux和Windows上,當被隱藏時識別正確的項目。在OSX的測試總是返回-1(wx.NOT_FOUND)
我正在運行32位wxPython,2.8.12.1(mac-unicode),它使用32bit Python 2.7.2中的Carbon API。
我找不到這個列爲wxWidgets中的已知錯誤,我很猶豫要提交,因爲看起來這應該起作用。列表框控件深入集成到GUI中,我真的不想將它交換爲ListCtrl或類似的東西,因爲我們現在有所有其他功能。有誰知道解決方法?
用例用於拖放。我想將項目從一個列表框拖放到另一個列表框中,當我將該項目拖放到第二個列表框上時,我想將其插入到正確的位置(放在它上面的項目上方)。我也想支持列表框的重新排序。 – Charles
你想做什麼?告訴選擇哪個項目? wx.EVT_LISTBOX會不會比這更好? –
我有一個朋友在wxWidgets(C++)中重複這個測試,他發現了相同的結果。他使用的是wxWidgets 2.9.2。這個問題似乎是wxWidgets庫自身的一個錯誤。 – Charles