gpt4 book ai didi

python - 在 wxpython 中,将所有文本从一个 TextCtrl 复制、剪切、粘贴并选择到另一个

转载 作者:行者123 更新时间:2023-12-01 06:03:57 24 4
gpt4 key购买 nike

我想要在 textcrtl 之间剪切、粘贴、复制和选择文本。谁能帮帮我,我的脑子已经好几个小时了。请看下面的代码,感谢您的帮助...

import wx
import os

class Editor(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(600, 500))

# setting up menubar
menubar = wx.MenuBar()

edit = wx.Menu()
cut = wx.MenuItem(edit, 106, '&Cut\tCtrl+X', 'Cut the Selection')
edit.AppendItem(cut)

copy = wx.MenuItem(edit, 107, '&Copy\tCtrl+C', 'Copy the Selection')
edit.AppendItem(copy)

paste = wx.MenuItem(edit, 108, '&Paste\tCtrl+V', 'Paste text from clipboard')
edit.AppendItem(paste)

delete = wx.MenuItem(edit, 109, '&Delete', 'Delete the selected text')
edit.AppendItem(delete)

edit.Append(110, 'Select &All\tCtrl+A', 'Select the entire text')

menubar.Append(edit, '&Edit')
self.SetMenuBar(menubar)

self.Bind(wx.EVT_MENU, self.OnCut, id=106)
self.Bind(wx.EVT_MENU, self.OnCopy, id=107)
self.Bind(wx.EVT_MENU, self.OnPaste, id=108)
self.Bind(wx.EVT_MENU, self.OnDelete, id=109)
self.Bind(wx.EVT_MENU, self.OnSelectAll, id=110)

self.text = wx.TextCtrl(self, -1, '', (110,55),(120, -1))
self.text = wx.TextCtrl(self, -1, '', (110,95),(120, -1))
self.text.SetFocus()

self.Centre()
self.Show(True)

def OnCut(self, event):
self.text.Cut()

def OnCopy(self, event):
self.text.Copy()

def OnPaste(self, event):
self.text.Paste()

def OnDelete(self, event):
frm, to = self.text.GetSelection()
self.text.Remove(frm, to)

def OnSelectAll(self, event):
self.text.SelectAll()


app = wx.App()
Editor(None, -1, 'Editor')
app.MainLoop()

最佳答案

您需要知道要从中剪切、复制或粘贴文本的wx.TextCtrl实例。在您提供的代码片段中,您尝试使用 self.text 来执行此操作,但正如 Velociraptors 已经说过的,您初始化了 self.text 两次,因此您失去了访问权限按名称指向第一个 wx.TextCtrl。因此,首先您必须获取正在使用的 wx.TextCtrl 实例,然后使用它的方法。这可以通过 wx.Frame.FindFocus() 类来完成,该类返回具有焦点的框架中的小部件(或 None)。

因此,对于 Cut 我们得到这样的结果:

def OnCut(self, event):
text = self.FindFocus()
if text is not None:
text.Cut()

其他方法也可以同样修改。

关于python - 在 wxpython 中,将所有文本从一个 TextCtrl 复制、剪切、粘贴并选择到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com