В PyQT5 можно сделать символ неудаляемым, используя стандартные элементы управления QLineEdit или QTextEdit.
Для того чтобы реализовать такой функционал, можно использовать событие keyPressEvent, чтобы перехватить нажатия клавиш на клавиатуре. Например, если вы хотите, чтобы символ "@" был неудаляемым, то можно использовать следующий код:
from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget from PyQt5.QtCore import Qt class CustomLineEdit(QLineEdit): def keyPressEvent(self, event): if event.key() == Qt.Key_Backspace and self.selectedText() == "@": pass else: super().keyPressEvent(event) class MainWindow(QWidget): def __init__(self): super().__init__() line_edit = CustomLineEdit() layout = QVBoxLayout() layout.addWidget(line_edit) self.setLayout(layout) if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_()
В данном примере мы наследуемся от класса QLineEdit
и переопределяем метод keyPressEvent
. Мы проверяем, если пользователь пытается удалить символ "@" с помощью клавиши Backspace и при этом этот символ выделен, то мы блокируем удаление этого символа. В остальных случаях мы вызываем оригинальную реализацию метода keyPressEvent.
Таким образом, символ "@" становится неудаляемым в элементе управления QLineEdit.