Python 3.x PyQt5方程文本框(下标/上标)

Python 3.x PyQt5方程文本框(下标/上标),python-3.x,user-interface,pyqt5,Python 3.x,User Interface,Pyqt5,我正在使用PyQt5制作一个化学应用程序,我想实现一个等式文本框,如果用户按下Shift+6,它将转到下标,等等。我做了很多研究,但我找不到一个很好的解释如何做。我非常想要这个功能,任何帮助都将不胜感激。您可以这样做。在本例中,按下Shift-F6时,文本框中的任何选定文本都将变为下标(如果已选择下标,则返回正常) from PyQt5 import QtWidgets from PyQt5.QtCore import Qt from PyQt5.QtGui import QTextCharFo

我正在使用PyQt5制作一个化学应用程序,我想实现一个等式文本框,如果用户按下Shift+6,它将转到下标,等等。我做了很多研究,但我找不到一个很好的解释如何做。我非常想要这个功能,任何帮助都将不胜感激。

您可以这样做。在本例中,按下Shift-F6时,文本框中的任何选定文本都将变为下标(如果已选择下标,则返回正常)

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QTextCharFormat


class Widget(QtWidgets.QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)
        self.text_box = QtWidgets.QTextEdit(self)
        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(self.text_box)

    def keyPressEvent(self, event):
        if event.modifiers() == Qt.ShiftModifier and event.key() == Qt.Key_F6:
            cursor = self.text_box.textCursor()
            format = cursor.charFormat()
            if format.verticalAlignment() == QTextCharFormat.AlignSubScript:
                vert = QTextCharFormat.AlignNormal
            else:
                vert = QTextCharFormat.AlignSubScript
            format.setVerticalAlignment(vert)
            cursor.setCharFormat(format)


if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    w = Widget()
    w.show()
    app.exec()