如何将QLineEdit添加到QMessageBox PyQt5

How to add QLineEdit to QMessageBox PyQt5

我想在我的 QMessageBox 上添加一个可复制的文本,所以我想我可以在 QMessageBox 上放置一个 QLineEdit,然后根据需要设置 QLineEdit 的文本,这样用户就可以选择文本并进行复制。

但是我没有成功。有没有办法将 QLineEdit 添加到 QMessageBox 或在 QMessageBox 上制作可复制的文本?

通过 QMessageBox.informativeText()QMessageBox.detailedText()QMessageBox.textInteractionFlags() 我发现了以下内容:

QMessageBox.informativeText()QMessageBox.detailedText() 始终可选,即使 QmessageBox.textInteractionFlags() 设置为 QtCore.Qt.NoTextInteractionQMessageBox.detailedText() 显示在文本编辑中。 QMessageBox.setTextInteractionFlags() 仅作用于 QmessageBox.text()documentation of QMessageBox. By flags you can set the text editable and/or selectable, see enum TextInteractionFlags.

中描述了这些类型文本的使用

这里是一个工作示例,在 QmessageBox.detailedText() 中有可选文本:

import sys 
from PyQt5 import QtWidgets, QtCore

class MyWidget(QtWidgets.QWidget): 
    def __init__(self): 
        QtWidgets.QWidget.__init__(self) 
        self.setGeometry(400,50,200,200)

        self.pushButton = QtWidgets.QPushButton('show messagebox', self)
        self.pushButton.setGeometry(25, 90, 150, 25)
        self.pushButton.clicked.connect(self.onClick)

    def onClick(self):
        msgbox = QtWidgets.QMessageBox()
        msgbox.setText('to select click "show details"')
        msgbox.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) # (QtCore.Qt.TextSelectableByMouse)
        msgbox.setDetailedText('line 1\nline 2\nline 3')
        msgbox.exec()

app = QtWidgets.QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())