0
ラベルを含む水平フレームを垂直フレーム内に含めることを試みていますが、ラベルが表示されていても正しい位置になくても標準のQLabelサブクラスQFrameがレイアウトに調整されていません
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()
結果がこれであるモジュール
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)
そして、これは "ウィジェット" からインポートするクラスです:
QLabelとQFrameの両方を強制的にサイズ変更すると、表示されますが左上に表示されます。
QBoxLayoutではなくQBoxLayoutを使用する理由はありますか?左から右にスタックされたウィジェットをたくさん用意したい場合は、QHBoxLayoutを使用してください。上から下に積み重ねる場合は、QVBoxLayoutを使用してください。私は決してQBoxLayoutを台無しにしません。 QBoxLayoutのドキュメントから: "便利なコンストラクタのために、QBoxLayoutではなくQVBoxLayoutとQHBoxLayoutを使用したいと思うでしょう。 – neuronet