, играя с 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_())
Если скопировать вставить коды в пустой скрипт, который работает, но когда я попытался установить его в моем основном сценарии я получаю эту ошибку: ' msgbox.setTextInteractionFlags (QtCore.Qt.NoTextInteraction) AttributeError: объект 'NoneType' не имеет атрибута «setTextInteractionFlags'' класс, начиная с этого: класс' Пример (QMainWindow): защиту __init __ (сам): супер(). __init __() ' – GLHF
Я работал над этим и исправил. Я просто поместил текст с помощью метода setText. Спасибо за ваш ответ, я не знал, что существует такой метод, как setTtextInteraction() и т. Д. Если вы можете дать больше информации о них в своем ответе, это будет полезно для будущих посетителей. – GLHF