如何将QLineEdit添加到QMessageBox PyQt5

时间:2016-05-12 09:33:29

标签: python python-3.4 pyqt5 qlineedit qmessagebox

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

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

1 个答案:

答案 0 :(得分:2)

通过与QMessageBox.informativeText()QMessageBox.detailedText()QMessageBox.textInteractionFlags()一起玩,我发现了以下内容:

QMessageBox.informativeText()QMessageBox.detailedText()始终可以选择,即使QmessageBox.textInteractionFlags()设置为QtCore.Qt.NoTextInteraction也是如此。 QMessageBox.detailedText()显示在短信中。 QMessageBox.setTextInteractionFlags()仅对QmessageBox.text()采取行动。 documentation of QMessageBox描述了这些文本的使用。通过标记,您可以将文本设置为可编辑和/或可选择,请参阅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_())