von mit QMessageBox.informativeText()
, QMessageBox.detailedText()
und QMessageBox.textInteractionFlags()
spielen fand ich folgendes:
QMessageBox.informativeText()
und QMessageBox.detailedText()
immer wählbar sind, auch wenn QmessageBox.textInteractionFlags()
-QtCore.Qt.NoTextInteraction
eingestellt sind. QMessageBox.detailedText()
wird in einem TextEdit angezeigt. QMessageBox.setTextInteractionFlags()
wirkt nur auf QmessageBox.text()
. Die Verwendung dieser Arten von Text ist in documentation of QMessageBox beschrieben. Mit Flags können Sie den Text editierbar und/oder wählbar einstellen, siehe enum TextInteractionFlags.
Hier ist ein funktionierendes Beispiel mit wählbarem Text in 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_())
Wenn ich kopieren Sie Ihre Codes in ein leeres Skript einfügen, das funktioniert, aber wenn ich es in meinem Haupt-Skript zu setzen versucht, bekomme ich diesen Fehler: ' msgbox.setTextInteractionFlags (QtCore.Qt.NoTextInteraction) Attribute: 'NoneType' Objekt hat kein Attribut ‚setTextInteractionFlags'' Klasse ist mit diesem Start:' Klasse Beispiel (QMainWindow): def __init __ (self): super(). __init __() ' – GLHF
Ich habe daran gearbeitet und behoben. Ich habe den Text einfach mit der Methode setText geschrieben. Vielen Dank für Ihre Antwort. Ich wusste nicht, dass es eine Methode wie die setTtextInteraction() usw. gibt. Wenn Sie mehr Informationen über sie in Ihrer Antwort geben können, wird es für zukünftige Besucher gut sein. – GLHF