PyQt5-Layout nach setLayout ändern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
pywald
User
Beiträge: 45
Registriert: Mittwoch 6. Januar 2021, 15:51

Hallo,

Wie schon im Titel beschrieben, will ich ein PyQt5-Layout im nachhinein (Nach "setLayout") ändern.
Hier mein (bisheriger) Code:

Code: Alles auswählen

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
import easygui
def upload():
    upload_layout = QVBoxLayout()
    title = QLabel(easygui.diropenbox(title="Ordner auswählen"))
    upload_layout.addWidget(title)
    window.setLayout(upload_layout)
    window.show()
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
button = QPushButton('Upload')
button.clicked.connect(upload)
layout.addWidget(button)
window.setLayout(layout)
window.show()
app.exec()
weiß jemand von euch wie das geht?

Danke im voraus,
Pywald
Benutzeravatar
__blackjack__
User
Beiträge: 14030
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@pywald: Der Code auf Modulebene sollte in einer Funktion stecken. Dann würde auffallen, dass `upload()` einfach so auf `window` zugreift, was als Argument übergeben werden sollte.

Was ist denn das konkrete Problem das Du hast beim ändern eines Layouts nach `setLayout()`? Im vorliegenden Code machst Du das ja gar nicht, also wo ist der Code bei dem Du das machst und welches Problem entsteht dabei?

Das `easygui` sollte da verschwinden. Verschiedene GUI-Rahmenwerke in einem Prozess zu mischen funktioniert nicht zuverlässig, und selbst wenn es so aussieht als würde es funktionieren, ist das nicht garantiert, und portabel ist es auch nicht. Qt hat selbst Dialoge um Verzeichnisse oder Dateien auszuwählen.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten