【发布时间】:2011-10-08 00:10:30
【问题描述】:
我在 wxPython 中使用拖放时遇到问题。
我有一个 ListCtrl 从中获取一些文本。这是源代码,它运行良好 - 我可以将我想要的文本拖放到 DnD 并放下它,例如进入我的编辑器和 MS Word。所以sorce方面很好。
供以后使用,我把拖出来的文字保存在self.chosenText
但是我的放置目标有些问题。
我的目标是放置在 GridBagSizer 中的 StaticText(存储在带有键:[a list] 的字典中)。
StaticText 是这样定义的,它工作正常:
self.itemsInDict['a'][1] = wx.StaticText(self, -1, '\ndrag monomer here\n', style=wx.ALIGN_CENTER)
我也定义了供以后使用:
self.keyOfItemInDict = 'a'
它是这样的目标 - 这也有效,鼠标指针表明这是一个有效的放置目标:
target = DropTarget(self.itemsInDict['a'][1])
self.itemsInDict['a'][1].SetDropTarget(target)
现在,我想要的是根据我从列表控件拖动的文本更改 StaticText 的标签。所以我创建了这个类(请不要笑,我真的很想理解这个但失败了......):
class DropTarget(wx.TextDropTarget):
def __init__(self, object):
wx.TextDropTarget.__init__(self)
self.object = object
# ----
def OnDropText(self, x, y, text):
self.object[self.keyOfItemInDict][1].SetLabel('\n'+self.chosenText+'\n')
# ----
这引发了 DropTarget 没有 keyOfItemInDict 的错误,这是可以理解的。使用 self.parent 不会产生好的结果,因为 StaticText 似乎是父级...
有人可以指点我正确的方向吗?
【问题讨论】: