Wenn ich die GUI starte und das Fenster schließe, verhält sich alles wie erwartet. Benutze ich aber den "Ok" Button von der QMessageBox, verschwindet die QMessageBox mit dem Icon aber die beiden QTexEdit Felder bleiben erhalten.
Ich kann die Zeile mit self.error_msg = QMessageBox() abändern in self.error_msg = QMessageBox(self). Dann erscheint die QMessageBox überhaupt nicht, sonder nur die beiden QTextEdit Felder.
Verwendet wird: Qt Version 6.7.2, PyQt6 Version 6.7.0 mit Python 3.12.5
Was mach ich da falsch? Ich weiß, daß es für die QMessageBox einen "Detailed" Text gibt. Aber ich jetzt schon mehrere Tage gescheitert die QMessageBox in der Größe anzupassen. Daher der Versuch mit "unabhängigen" QTextEdit" Feldern, wobei eines wahrscheinlich reichen würde.
Vermutlich schließt der "ok" Button der "QMessageBox" eben nur diese. Aber wie komme ich an die Information Button "ok" würde gerückt heran? --> dann könnte ich die Textfelder in der Software schließen.
Ich verwende aktuell eine Variante, in der ich noch einen eigenen "pushButton" als zusätzliches Element und die "QMessageBox" ohne Button verwende. Damit habe ich alles in der Hand, aber wieder das Problem mit der sich sehr seltsam verhaltenen Größe der "QMessageBox", die sich
nicht ändert, sondern nur den Abstand von "critical Icon" zum Text anpaßt, aber nicht die angezeigte Textbreite.
Code: Alles auswählen
import sys
from PyQt6.QtWidgets import QApplication, QDialog, QMessageBox, QTextEdit, QVBoxLayout
class __errorWindow(QDialog):
"""Class definition to open Error Window."""
def __init__(self, parent=None, addOnInfo=False):
super().__init__(parent)
self.resize(600, 600)
# create message box
self.error_msg = QMessageBox()
self.error_msg.setIcon(QMessageBox.Icon.Critical)
self.error_msg.setStandardButtons(QMessageBox.StandardButton.Ok)
# create a textEdit field
self.textEdit = QTextEdit()
self.textEdit.setReadOnly(True)
# create second textEdit field
self.addOnInfo = QTextEdit()
self.addOnInfo.setReadOnly(True)
# create main layout
main_layout = QVBoxLayout()
main_layout.addWidget(self.error_msg) # add error message box to layout
main_layout.addWidget(self.textEdit) # add first textEdit box to layout
main_layout.addWidget(self.addOnInfo) # add second textEdit box to layout
self.setLayout(main_layout)
if not QApplication.instance():
app = QApplication(sys.argv)
else:
app = QApplication.instance()
errorWindow = __errorWindow()
print(" ------- ", errorWindow.exec())