Python3 PyQt5文本浏览框QTextBrowser实现文件拖入显示路径及读取文件内容时不会自动换行

QTextBrowser提供了可以显示文本的对话框,接下来利用这个实现拖拽文件显示文件路径

import os
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class Example(QMainWindow):

    def __init__(self):
        super(Example, self).__init__()
        # 窗口标题
        self.setWindowTitle('文件拖入')
        # 定义窗口大小
        self.resize(500, 400)
        self.textBrowser = QTextBrowser()
        self.setCentralWidget(self.textBrowser)
        # 不换行设置
        self.textBrowser.setLineWrapMode(0)
        # 调用Drops方法
        self.setAcceptDrops(True)
        # 设置字体
        font = QFont()
        font.setFamily("黑体")
        font.setPointSize(13)
        self.textBrowser.setFont(font)

    # 鼠标拖入事件
    def dragEnterEvent(self, event):
        self.textBrowser.setText('文件路径:\n' + os.path.dirname((event.mimeData().urls())[0].toLocalFile()))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    example = Example()
    example.show()
    sys.exit(app.exec_())

这段代码可以在文本浏览框QTextBrowser拖入文件并显示文件的路径

接下来讲解下这段代码:

self.textBrowser = QTextBrowser()
self.setCentralWidget(self.textEdit)

第一句是用来创建不可编辑可显示信息的文本框,第二句是把文本框显示出来

self.textBrowser.setLineWrapMode(0)

 当文本信息过长时,想按照文本的内容输出而不进行自动换行就可以使用这个语句

self.setAcceptDrops(True)

把self.setAcceptDrops()设置为True文本框就有接收拖入文件的功能,然后再实现dragEnterEvent()拖入事件

font = QFont()
font.setFamily("黑体")
font.setPointSize(13)
self.textBrowser.setFont(font)

这段代码可以设置文本框内的字体

def dragEnterEvent(self, event):
        self.textBrowser.setText('文件路径:\n' + os.path.dirname((event.mimeData().urls())[0].toLocalFile()))

event.mimeData()可以用来接收通过拖放机制传输的信息,原本我用event.mimeData().text()返回的是‘file:///文件绝对路径’,但是这个每次都带‘file:///’,就需要另外写一个replace的函数替换掉,显得有点麻烦,于是我就用event.mimeData().urls,返回的是包含的URL列表,再用event.mimeData().urls())[0].toLocalFile()返回的就是'文件绝对路径',然后再用os.path.dirname就得到文件的路径并显示在文本框上。

截图所示:

拖入文件:

猜你喜欢

转载自blog.csdn.net/weixin_41611054/article/details/103073870
今日推荐