【小记】PySide/PyQt 继承重写 QTextEdit 后拖入图片或文件后输入光标显示异常问题

问题说明:

光标不闪烁不随鼠标点击改变位置,虽然鼠标定位和键盘输入仍然有效。

 

解决方法:

在重写的 dropEvent 当中执行父类的函数,即添加:

super().dropEvent(event)

 

from PySide6.QtWidgets import QTextEdit
from PySide6.QtGui import QDragEnterEvent, QDropEvent, QTextCursor

class PlainTextPasteEdit(QTextEdit):

    def __init__(self, parent=None):
        super().__init__(parent)
        return
    
    def insertImage(self, file_name):
        image_html = f'<img src="{file_name}" alt="image" width="64" height="64"/>'
        self.insertHtml(image_html)
        return
    
    def dragEnterEvent(self, event: QDragEnterEvent):
        super().dragEnterEvent(event)
        if event.mimeData().hasUrls():
            event.acceptProposedAction()
        return

    def dropEvent(self, event: QDropEvent):
        super().dropEvent(event)
        mime = event.mimeData()
        if mime.hasUrls():
            urls = mime.urls()
            for url in urls:
                if url.isLocalFile():
                    file_path = url.toLocalFile()
                    file_extension = os.path.splitext(file_path)[1].lower()
                    if comm.vision_flag and file_extension in \
                        ['.jfif', '.gif', '.jpeg', '.jpg', '.png', '.bmp', '.pjp', '.apng', '.pjpeg', '.avif']:
                        self.undo()
                        self.insertImage(file_path)
            event.acceptProposedAction()
        return

 

 

版权声明:
作者:芯片烤电池
链接:https://www.airchip.org.cn/index.php/2024/09/15/%d1%81jpysidejcz%d0%b4qtextedithtdtphbrwjhsrgbxsycwt/
来源:芯片烤电池
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
【小记】PySide/PyQt 继承重写 QTextEdit 后拖入图片或文件后输入光标显示异常问题
问题说明: 光标不闪烁不随鼠标点击改变位置,虽然鼠标定位和键盘输入仍然有效。   解决方法: 在重写的 dropEvent 当中执行父类……
<<上一篇
下一篇>>