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

标签 python focus wxpython copy-paste right-click

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

这可能吗?或者有更好的解决方案吗?

最佳答案

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)

我认为效果很好......

关于python - wxPython:鼠标右键单击不设置焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20386801/

相关文章:

python - 如何用 Python 缓冲区对象做 memset?

python - 添加/删除列表中的项目

Python 搜索文本列,如果单词列表中有任何匹配的关键字,则返回

python - 通过添加 timedelta 创建具有唯一值的 DatetimeIndex 的 DataFrame

javascript - browser.onfocus() aka window.onfocus() 适用于所有浏览器选项卡

html - CSS 表单/输入操作

python - Python中的"Threading",绘制接收到的数据并同时发送

Python MINIDOM Object 如何只从 DOM 对象中获取元素名称

Java 8 - 切换窗口后丢失所有键盘输入或焦点

python - 是否可以将 wx.Panel 定义为 Python 中的类?