如何在Wx.Stc.StyledTextCtrl中不允许撤消(Ctrl + Z)

问题描述 投票:1回答:1

我在python-3中做一个项目,并用wxpython创建了一个gui。在gui中,我使用wx.stc.StyledTextCtrl,但我不希望用户无法撤消操作(Ctrl + Z)。有选择吗?如果有人知道如何不允许(Ctrl + V),也很棒。

此外,我想知道是否存在不允许标记文本然后将其删除的功能。例如,我要防止该标记:“ bla bla 此文本已标记 bla bla”。我不想让用户标记他的文本,然后按Delete或其他键导致标记的文本被删除。

感谢那些回答!

这是创建wx.stc.StyledTextCtrl的基本代码:

import wx
from wx.stc import StyledTextCtrl

app = wx.App()
frame = wx.Frame(None, -1, title='2', pos=(0, 0), size=(500, 500))
frame.Show(True)
messageTxt = StyledTextCtrl(frame, id=wx.ID_ANY, pos=(0, 0), size=(100 * 3, 100),
                            style=wx.TE_MULTILINE, name="File")

app.SetTopWindow(frame)
app.MainLoop()
python-3.x user-interface wxpython keyboard-shortcuts wxstyledtextctrl
1个回答
0
投票

您可以将StyledTextCtrl绑定到EVT_KEY_DOWN事件,并在按下控制键时阻止V和Z键。使用您的示例:

import wx
from wx.stc import StyledTextCtrl

app = wx.App()
frame = wx.Frame(None, -1, title='2', pos=(0, 0), size=(500, 500))
frame.Show(True)
messageTxt = StyledTextCtrl(frame, id=wx.ID_ANY, pos=(0, 0), size=(100 * 3, 100),
                            style=wx.TE_MULTILINE, name="File")


def on_key_down(evt):
    """
    :param evt:
    :type evt: wx.KeyEvent
    :return:
    :rtype:
    """

    if evt.CmdDown() and evt.GetKeyCode() in (ord("Z"), ord("V")):
        print("vetoing control v/z")
        return
    # allow all other keys to proceed
    evt.Skip()


messageTxt.Bind(wx.EVT_KEY_DOWN, on_key_down)

app.SetTopWindow(frame)
app.MainLoop()
© www.soinside.com 2019 - 2024. All rights reserved.