Вы можете использовать какой-нибудь входной буфер.
Захватывать каждое событие wx.EVT_KEY_DOWN из TextCtrl.Если это комбинация клавиш, которая производит символ, добавьте его в буфер и дайте ему пройти.Если это пробел, удалите последний символ из буфера и разрешите его, или если в буфере не осталось символов, не разрешайте его.Это защитит вашу командную строку в текущей строке.
Вам также придется обращаться к каждому событию клавиатуры или мыши, которое может изменить положение курсора.Если вы не хотите, чтобы пользователь мог перемещать курсор в пределах текущей строки или переходить к предыдущим строкам, вам придется обнаруживать и отменять клавиши со стрелками, home, end, page up, page down, щелчки мыши,и т. д. Может быть трудно полностью заблокироваться.
Пример предотвращения нажатия клавиш:
# inside your Frame init function...
self.text = wx.TextCtrl(self.panel, wx.ID_ANY, style=wx.TE_MULTILINE)
self.text.Bind(wx.EVT_KEY_DOWN, self.OnKey)
# ...
def OnKey(self, evt):
# keycodes for arrow keys, page up/down
KEYS_TO_CANCEL = [314, 315, 316, 317, 366, 367]
keycode = evt.GetKeyCode()
if keycode in KEYS_TO_CANCEL:
print('Cancelled!')
else:
evt.Skip()
Удачи!