PyQt5 und QVBoxLayout

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
HeinKurz
User
Beiträge: 12
Registriert: Montag 20. März 2023, 22:09

Hi!
Ich will ein Fenster mit einer QGroupBox oben im Fenster mit fixer Größe und darunter eine Zeichenfläche (painter).
Wie schaffe ich es, dass die QGroupBox die fixe Größe behält und sich die Zeichenfläche der variablen Fenstergröße anpasst?
Benutzeravatar
__blackjack__
User
Beiträge: 13303
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Du könntest der Zeichenfläche in QVBoxLayout einen `layoutStretch`-Wert von 1 geben, falls ich das Problem richtig verstanden habe. Ansonsten wäre ein minimales, lauffägiges Beispiel, welche das Problem demonstriert, hilfreich.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Benutzeravatar
Axel-WAK
User
Beiträge: 62
Registriert: Dienstag 29. November 2022, 11:52

Du kannst auch setFixedSize verwenden.

kleines Beispiel

Code: Alles auswählen

from PyQt5.QtWidgets import (QMainWindow, QApplication, QVBoxLayout, QHBoxLayout, 
                             QWidget, QGroupBox, QTextEdit)

class MainWindow(QMainWindow):
    def __init__(self, parent = None):
        super(MainWindow, self).__init__(parent)
        self.setupUI()
        
    def setupUI(self):
        self.setWindowTitle("Main Window")
        self.setGeometry(0, 0, 800, 600)
        central_widget = QWidget()
        vbox = QVBoxLayout()
        central_widget.setLayout(vbox)
        self.setCentralWidget(central_widget)
        
        group_box = QGroupBox()
        group_box.setFixedSize(500, 300)
        
        vbox.addWidget(group_box)
        
        self.text_edit = QTextEdit(plainText = "Hello World")
        vbox.addWidget(self.text_edit)


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()

    sys.exit(app.exec_())
OS: LMDE5 *** Homepage *** Github Seite
Benutzeravatar
__blackjack__
User
Beiträge: 13303
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Axel-WAK: Was soll denn *der* Scheiss jetzt? Bist Du bekloppt? (Gut das ich gerade gute Laune habe und nicht unsachlich werde. 😎)
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Benutzeravatar
Axel-WAK
User
Beiträge: 62
Registriert: Dienstag 29. November 2022, 11:52

Könntest Du das vielleicht noch mal nüchtern erklären? Oder ist das normal hier?
OS: LMDE5 *** Homepage *** Github Seite
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Tonfall ist sicherlich ein Scherz, __blackjack__ neigt eher nicht zu solchen Formulierungen.

Was die inhaltliche Auseinandersetzung angeht: solche fixen Geometrieen sind von wenigen Ausnahmen abgesehen eine ganz schlechte Idee. Die Groesse der Box sollte von ihrem Inhalt bestimmt werden, *nicht* von aussen vorgegeben werden. Denn sonst kommt es ganz schnell und eigentlich immer zu Problemen. Wenn der User zB eine Skalierung fuer den HIGH DPI Monitor eingestellt hat, und ploetzlich beschriftete Elemente eine andere Groesse haben wollen. Dann schneidest du wahlweise etwas ab, oder erzeugst komischen Leerraum. Das ganze Qt-Layout basiert auf einem Zusammenspiel von Constraints, die sich dann ausbalancieren. Damit muss man arbeiten. Sowas wie du hier gezeigt hast, kann nur klappen, wenn man das gesamte System komplett unter Kontrolle hat. Systemeinstellungen, Fonts, Bildschirmaufloesungen. Das ist eher selten, und wenn man das braucht und will, wuerde ich eher zu anderen Toolkits greifen, weil das einfach nicht die Staerke von Qt ist.
Benutzeravatar
Axel-WAK
User
Beiträge: 62
Registriert: Dienstag 29. November 2022, 11:52

__deets__ hat geschrieben: Freitag 19. Mai 2023, 10:21 Der Tonfall ist sicherlich ein Scherz, __blackjack__ neigt eher nicht zu solchen Formulierungen.
Eher ein schlechter "Scherz".
OS: LMDE5 *** Homepage *** Github Seite
Benutzeravatar
__blackjack__
User
Beiträge: 13303
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

War ja auch ein Scherz zu einer qualitativ sauschlechten Antwort. 🙂
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Benutzeravatar
Axel-WAK
User
Beiträge: 62
Registriert: Dienstag 29. November 2022, 11:52

Dann macht doch bessere Vorschläge.
OS: LMDE5 *** Homepage *** Github Seite
Benutzeravatar
__blackjack__
User
Beiträge: 13303
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Axel-WAK: Warum? Mach Du doch einfach nicht so einen schlechten. 🤓
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Antworten