【问题标题】:wxPython - Drag and Drop to StaticText in a dictwxPython - 拖放到字典中的 StaticText
【发布时间】: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 似乎是父级...

有人可以指点我正确的方向吗?

【问题讨论】:

    标签: drag-and-drop wxpython


    【解决方案1】:

    愚蠢的我 - self.object 已经是 self.itemsInDict[self.keyOfItemInDict][1]。 所以

    class DropTarget(wx.TextDropTarget):  
    
        def __init__(self, object):
            wx.TextDropTarget.__init__(self)
            self.object = object
        # ----
    
    
        def OnDropText(self, x, y, data):
            self.object.SetLabel('\n'+data+'\n')
        # ----
    

    做我需要的...

    【讨论】:

    • 感谢您发布您的答案,即使您自己回答了。有些人永远不会回来。有些人删除了他们原来的问题。您可能已经帮助了一位 wx 用户。
    猜你喜欢
    • 2011-07-09
    • 2010-09-22
    • 1970-01-01
    • 2011-06-03
    • 2011-03-21
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多