我的GUI当前有右键单击选项(剪切、复制、粘贴)
然而,我意识到当我右键点击我的搜索栏(wx.SearchCtrl)尝试粘贴时,焦点没有设置到搜索栏上,因此我无法粘贴。
self.panel.Bind(wx.EVT_CONTEXT_MENU, self.OnShowPopup)
def OnShowPopup(self, event):
""" Obtain right-click selection """
pos = event.GetPosition()
pos = self.panel.ScreenToClient(pos)
self.panel.PopupMenu(self.rightClickMenu, pos)
def OnPopupItemSelected(self, event):
""" Display right-click menu """
item = self.rightClickMenu.FindItemById(event.GetId())
text = item.GetText()
elif text == "Paste":
self.OnPaste()
def OnPaste(self, event = None):
""" Paste content from clipboard """
text = self.FindFocus()
if text:
if isinstance(text, wx.TextCtrl):
text.Paste()这是我的想法:当鼠标右键点击时得到鼠标的位置.然后使用该位置在持有该位置的Ctrl上设置焦点。
这个是可能的吗?还是有更好的解决方案?
发布于 2013-12-05 18:32:36
保存执行右键单击的对象,然后选择“粘贴”后进行setFocus。event.GetEventObject().SetFocus()不能工作的原因很可能是因为在从PopupMenu中选择粘贴之后,TextCtrl失去了焦点。所以文本不会在那里打印
def OnShowPopup(self, event):
""" Obtain right-click selection """
pos = event.GetPosition()
pos = self.panel.ScreenToClient(pos)
self.rightClickSelected = event.GetEventObject()
self.panel.PopupMenu(self.rightClickMenu, pos)
def OnPaste(self, event = None):
""" Paste content from clipboard """
self.rightClickSelected.SetFocus()
if isinstance(self.rightClickSelected, wx.TextCtrl):
self.rightClickSelected.Paste()发布于 2013-12-04 22:05:20
def OnShowPopup(self, event):
""" Obtain right-click selection """
pos = event.GetPosition()
pos = self.panel.ScreenToClient(pos)
event.GetEventObject().SetFocus()
self.panel.PopupMenu(self.rightClickMenu, pos)会很好我想..。
https://stackoverflow.com/questions/20386801
复制相似问题