Python PYQT5使文本编辑不可编辑,但链接可点击(可选)

Python PYQT5使文本编辑不可编辑,但链接可点击(可选),python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我有一个文本编辑框,我不希望用户能够编辑,因此我使用了属性:self.textdedit.setReadOnly(True)但是,我希望用户能够单击文本中的链接setReadOnly(True)也会禁用链接。有没有办法使我的链接可点击,但不可编辑文本?如果不想使用textBrower,可以使用以下命令 self.textEdit.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse) 当ReadOnly设置为true时,将作为选择ur

我有一个文本编辑框,我不希望用户能够编辑,因此我使用了属性:
self.textdedit.setReadOnly(True)
但是,我希望用户能够单击文本中的链接
setReadOnly(True)
也会禁用链接。有没有办法使我的链接可点击,但不可编辑文本?

如果不想使用textBrower,可以使用以下命令

self.textEdit.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
当ReadOnly设置为true时,将作为选择url的开始。您必须实现一个函数来将链接的选择连接到一个函数(类似QTextBrowser的函数已经实现)。例如,您可以复制链接。 但是,我建议使用文本浏览器:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.gridLayout = QtWidgets.QGridLayout(Dialog)
        self.gridLayout.setObjectName("gridLayout")
        self.textBrowser = QtWidgets.QTextBrowser(Dialog)
        self.textBrowser.setReadOnly(True)
        self.textBrowser.setObjectName("textBrowser")
        self.gridLayout.addWidget(self.textBrowser, 0, 0, 1, 1)
        self.textEdit = QtWidgets.QTextEdit(Dialog)
        self.textEdit.setReadOnly(True)
        self.textEdit.setObjectName("textEdit")
        self.gridLayout.addWidget(self.textEdit, 1, 0, 1, 1)

        self.textEdit.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
        self.textBrowser.setOpenExternalLinks(True)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.textBrowser.setHtml(_translate("Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">This is a TextBrowser</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><a href=\"https://www.google.de\"><span style=\" font-size:8pt; text-decoration: underline; color:#0000ff;\">www.google.de</span></a></p></body></html>"))
        self.textEdit.setHtml(_translate("Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">This is a TextEdit</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><a href=\"https://www.google.de\"><span style=\" font-size:8pt; text-decoration: underline; color:#0000ff;\">www.google.de</span></a></p></body></html>"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
从PyQt5导入QtCore、QtGui、qtwidget
类Ui_对话框(对象):
def设置UI(自我,对话框):
setObjectName(“对话框”)
对话框。调整大小(400300)
self.gridLayout=qtwidts.QGridLayout(对话框)
self.gridLayout.setObjectName(“gridLayout”)
self.textBrowser=qtwidts.QTextBrowser(对话框)
self.textBrowser.setReadOnly(True)
self.textBrowser.setObjectName(“textBrowser”)
self.gridLayout.addWidget(self.textBrowser,0,0,1,1)
self.textEdit=QtWidgets.QTextEdit(对话框)
self.textEdit.setReadOnly(True)
self.textEdit.setObjectName(“textEdit”)
self.gridLayout.addWidget(self.textEdit,1,0,1,1)
self.textEdit.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
self.textBrowser.setOpenExternalinks(True)
自重传(对话框)
QtCore.QMetaObject.connectSlotsByName(对话框)
def重新传输(自我,对话框):
_translate=QtCore.QCoreApplication.translate
setWindowTitle(_translate(“Dialog”,“Dialog”))
self.textBrowser.setHtml(_translate(“Dialog”),“\n”
“\n”
p,li{空白:预换行;}\n
“\n”
“

这是一个文本浏览器

\n” “

”) self.textEdit.setHtml(_translate(“Dialog”),“\n” “\n” p,li{空白:预换行;}\n “\n” “

这是一个文本编辑

\n” “

”) 如果名称=“\uuuuu main\uuuuuuuu”: 导入系统 app=qtwidts.QApplication(sys.argv) MainWindow=qtwidts.QDialog() ui=ui\u对话框() ui.setupUi(主窗口) MainWindow.show() sys.exit(app.exec_())
为什么不使用文本浏览器?用户是否必须在某一点编辑url?