2011-11-16 94 views
0

我有一個使用wxPython開發的桌面應用程序。這些應用程序在Windows和OSX下運行良好(相同的代碼庫,沒有平臺特定的代碼)。除了拖放之外,一切都可以在Linux上運行。我可以拖動很好,但DoDragDrop總是返回wx.DragCancel。然而,我可以從我的應用程序拖動到另一個應用程序/桌面,除了文本和DoDragDrop返回wx.DragCopy。wx.TextDropTarget在Linux中不工作

在我看來,DropTargets沒有被調用。我爲OnData等添加了調試語句,它們從未激活。

有沒有人看過這個,知道一個解決方法?

+0

我將問題縮小到wx.StaticBoxSizer。當我的放置目標包含在StaticBoxSizer中時,放置目標不起作用!這似乎是特定於Linux(我正在運行的Ubuntu),因爲我沒有與OSX/WindowsXP的問題。 – Charles

+1

歡迎來到SO。你應該包括一個最小的,功能性的代碼來重現你的問題。否則,你可能不會得到有用的幫助。我們怎麼能從你發佈的問題中知道你的問題在StaticBoxSizer上? – joaquin

回答

-1

在wxWidgets中發現了一個被認爲是固定的已知問題,http://trac.wxwidgets.org/ticket/2763,我可以在linux上重新創建這個問題。我重新打開了票。

與此同時,您可以交換您的StaticBoxSizers或BoxSizers。或...

這工作.... 父= DropTargetCtrn.GetParent() 盒= [在parent.GetChildren()X爲X如果類型(X)== wx.StaticBox] tmpParent = WX .Panel(父) 爲框中框: box.Reparent(tmpParent) box.Reparent(父) parent.Destroy()

該解決方案似乎降低StaticBox在窗口層次所以不要」不會干擾掉落事件。請注意,box.Lower()不起作用。