Ich versuche, einen horizontalen Frame mit einem Label in einen vertikalen Frame einzufügen, aber obwohl das Label angezeigt wird, ist es nicht in der richtigen Position und ist auf die Größe eines Standard-QLabel beschränktSubclassed QFrame passt sich nicht an das Layout an
Dies ist die Hauptklasse:
class Launcher(QMainWindow):
def __init__(self):
super().__init__()
self.setFrame() #sets up window's geometry, works fine
self.setContent()
self.show()
def setContent(self):
layout = QBoxLayout(QBoxLayout.TopToBottom)
layout.addWidget(widgets.Logo(self), 0, Qt.AlignTop)
self.setLayout(layout)
Und das ist die importierte Klasse von einem "Widgets" Modul
class Logo(QFrame):
def __init__(self, parent):
super().__init__(parent)
layout = QBoxLayout(QBoxLayout.LeftToRight)
text = QLabel("PyTitle", self)
text.setAlignment(Qt.AlignCenter)
text.setFont(QFont("impact", 48))
layout.addWidget(text, 0, Qt.AlignCenter)
self.setLayout(layout)
self.show()
Wenn ich sowohl QLabel AND QFrame zwingend Größe ändert, ist es sichtbar, aber immer noch in der oberen linken Ecke.
Gibt es einen Grund, warum Sie QBoxLayout und nicht QHBoxLayout verwenden? Wenn Sie nur eine Reihe von Widgets von links nach rechts gestapelt haben möchten, verwenden Sie QHBoxLayout, und wenn Sie möchten, dass sie von oben nach unten gestapelt werden, verwenden Sie QVBoxLayout. Ich würde mich nie mit QBoxLayout anlegen. Aus den Dokumenten für QBoxLayout: "Sie werden fast immer QVBoxLayout und QHBoxLayout anstelle von QBoxLayout wegen ihrer praktischen Konstruktoren verwenden." – neuronet