wxPython:用鼠标右键单击不设置焦点

2024-09-28 13:13:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的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上。在

这可能吗?还是有更好的解决办法?在


Tags: textposselfrightevent粘贴def焦点
2条回答

保存执行右键单击的对象,然后选择“粘贴”后设置焦点。 为什么事件.GetEventObject在settextupFocus()之后,从settextupPaste()中选择可能会丢失焦点。所以文本不会在那里打印

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()
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)

会很好的,我想。。。在

相关问题 更多 >

    热门问题