QMessageBox 防止在 DetailedText 中换行
QMessageBox prevent line breaks in DetailedText
我正在尝试构建一个消息对话框,显示对我的 UI 的影响的详细信息。这个列表足够长,需要一个滚动条,但文本也足够长,我希望这些行不要被打断。似乎很难改变 QMessage 对话框的大小,因为它是根据其内容来计算的。有没有办法“鼓励那个详细的框来防止换行?
或者允许调整 QMessageBox 的大小
impacts = []
# Create Impacts
for i in range(0, 100):
impacts.append(" This is a text can be a little long but not too long impact {}".format(i))
# CreateDialog
diffBox = QMessageBox()
diffBox.setWindowTitle("Test")
diffBox.setInformativeText(
"Impacts have been found, and this message is long but not too long as well but independent of the list")
diffBox.setDetailedText("changes:\n\n" + "\n".join(impacts))
# Add Buttons
diffBox.addButton("Apply", QMessageBox.AcceptRole)
diffBox.setStandardButtons(QMessageBox.Cancel)
diffBox.setSizeGripEnabled(True)
result = diffBox.exec_()
您必须获取 QTextEdit 并禁用换行:
from Qt.QtCore import Qt
from Qt.QtWidgets import QApplication, QMessageBox, QTextEdit
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
impacts = []
# Create Impacts
for i in range(0, 100):
impacts.append(
" This is a text can be a little long but not too long impact {}".format(i)
)
# CreateDialog
diffBox = QMessageBox()
diffBox.setWindowTitle("Test")
diffBox.setInformativeText(
"Impacts have been found, and this message is long but not too long as well but independent of the list"
)
diffBox.setDetailedText("changes:\n\n" + "\n".join(impacts))
# Add Buttons
diffBox.addButton("Apply", QMessageBox.AcceptRole)
diffBox.setStandardButtons(QMessageBox.Cancel)
diffBox.setSizeGripEnabled(True)
te = diffBox.findChild(QTextEdit)
if te is not None:
te.setLineWrapMode(QTextEdit.NoWrap)
te.parent().setFixedWidth(
te.document().idealWidth()
+ te.document().documentMargin()
+ te.verticalScrollBar().width()
)
result = diffBox.exec_()
我正在尝试构建一个消息对话框,显示对我的 UI 的影响的详细信息。这个列表足够长,需要一个滚动条,但文本也足够长,我希望这些行不要被打断。似乎很难改变 QMessage 对话框的大小,因为它是根据其内容来计算的。有没有办法“鼓励那个详细的框来防止换行?
或者允许调整 QMessageBox 的大小
impacts = []
# Create Impacts
for i in range(0, 100):
impacts.append(" This is a text can be a little long but not too long impact {}".format(i))
# CreateDialog
diffBox = QMessageBox()
diffBox.setWindowTitle("Test")
diffBox.setInformativeText(
"Impacts have been found, and this message is long but not too long as well but independent of the list")
diffBox.setDetailedText("changes:\n\n" + "\n".join(impacts))
# Add Buttons
diffBox.addButton("Apply", QMessageBox.AcceptRole)
diffBox.setStandardButtons(QMessageBox.Cancel)
diffBox.setSizeGripEnabled(True)
result = diffBox.exec_()
您必须获取 QTextEdit 并禁用换行:
from Qt.QtCore import Qt
from Qt.QtWidgets import QApplication, QMessageBox, QTextEdit
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
impacts = []
# Create Impacts
for i in range(0, 100):
impacts.append(
" This is a text can be a little long but not too long impact {}".format(i)
)
# CreateDialog
diffBox = QMessageBox()
diffBox.setWindowTitle("Test")
diffBox.setInformativeText(
"Impacts have been found, and this message is long but not too long as well but independent of the list"
)
diffBox.setDetailedText("changes:\n\n" + "\n".join(impacts))
# Add Buttons
diffBox.addButton("Apply", QMessageBox.AcceptRole)
diffBox.setStandardButtons(QMessageBox.Cancel)
diffBox.setSizeGripEnabled(True)
te = diffBox.findChild(QTextEdit)
if te is not None:
te.setLineWrapMode(QTextEdit.NoWrap)
te.parent().setFixedWidth(
te.document().idealWidth()
+ te.document().documentMargin()
+ te.verticalScrollBar().width()
)
result = diffBox.exec_()