wx.TextDropTarget 在 Linux 中不工作
我有一个用 wxPython 开发的桌面应用程序。应用程序在 Windows 和 OSX 下运行良好(相同的代码库,没有特定于平台的代码)。除了拖放之外,一切都可以在 Linux 上运行。我可以很好地拖动,但 DoDragDrop 总是返回 wx.DragCancel。但是,我可以从我的应用程序拖动到除文本之外的另一个应用程序/桌面,并且 DoDragDrop 返回 wx.DragCopy。
在我看来,DropTargets 没有被调用。我已将调试语句添加到 OnData 等,但它们从未被激活。
有没有人见过这个并知道解决方法?
I have a desktop application developed with wxPython. The applications runs fine under Windows and OSX (same codebase, no platform specific code). Everything works on Linux except drag and drop. I can drag just fine, but DoDragDrop always returns wx.DragCancel. I can however, drag from my application or to another app/desktop which excepts text and DoDragDrop returns wx.DragCopy.
It seems to me like the DropTargets aren't getting called. I've added debug statements to OnData, etc and they are never activated.
Has anyone seen this and know of a workaround?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 wxWidgets 中发现一个已知问题,该问题已被视为已修复,http://trac.wxwidgets.org/ticket/2763< /a>,我能够在 Linux 上重现这个问题。我重新打开了票。
同时,您可以交换 StaticBoxSizer 或 BoxSizer。或者...
这有效...
父 = DropTargetCtrn.GetParent()
box = [x for x inparent.GetChildren() if type(x)==wx.StaticBox]
tmpParent = wx.Panel(父)
对于盒中盒:
box.Reparent(tmpParent)
box.Reparent(父级)
Parent.Destroy()
此解决方案似乎降低了窗口层次结构中的 StaticBox,因此它不会干扰放置事件。请注意,box.Lower() 不起作用。
Found a known issue in wxWidgets that was considered fixed, http://trac.wxwidgets.org/ticket/2763, I am able to recreate this issue on linux. I reopened the ticket.
In the meantime you can swap your StaticBoxSizers or BoxSizers. or...
This works....
parent = DropTargetCtrn.GetParent()
boxes = [x for x in parent.GetChildren() if type(x)==wx.StaticBox]
tmpParent = wx.Panel(parent)
for box in boxes:
box.Reparent(tmpParent)
box.Reparent(parent)
parent.Destroy()
This solution seems to lower the StaticBox in the window hierarchy so it don't interfere with drop events. Note, box.Lower() does not work.