标签在移动窗口pyqt5后更改位置>

问题描述 投票:0回答:1

我有这个窗口,其中主布局是带有嵌套QVBoxlayoutQHBoxlayout

出于某种原因,在顶部上设置了两个标签用鼠标移动窗口或调整窗口大小后,pressen_label = qtw.QLabel("Choose A")标签正在更改其位置。

使用鼠标移动/更改窗口大小之前

“”

移动窗口后

“”

如何锁定标签的位置使其不移动?

pressen_label = qtw.QLabel("Choose  A")
quality_label = qtw.QLabel("Choose  B")
hblayout_labelcombo = qtw.QHBoxLayout()
hblayout_labelcombo.addWidget(pressen_label)
hblayout_labelcombo.addStretch(1)
hblayout_labelcombo.addWidget(quality_label)
hblayout_labelcombo.addStretch(10)
hblayout_labelcombo.setAlignment(qtc.Qt.AlignTop)

完整代码

#!/usr/bin/env python

"""
template interface

"""


import sys
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtCore as qtc
from PyQt5 import QtGui as qtg


class SwellingwindowParent(qtw.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # your code will go here


        # position
        qtRectangle = self.frameGeometry()
        centerPoint = qtw.QDesktopWidget().availableGeometry().center()
        qtRectangle.moveTop(100)

        # size
        self.resize(1400, 910)
        # frame title
        self.setWindowTitle("Parent Window")

        # widgets

        # combobox label and layout
        pressen_label = qtw.QLabel("Choose  A")
        quality_label = qtw.QLabel("Choose  B")
        hblayout_labelcombo = qtw.QHBoxLayout()
        hblayout_labelcombo.addWidget(pressen_label)
        hblayout_labelcombo.addStretch(1)
        hblayout_labelcombo.addWidget(quality_label)
        hblayout_labelcombo.addStretch(10)
        hblayout_labelcombo.setAlignment(qtc.Qt.AlignTop)

        # combobox widget and layout
        comobox_selectpressen = qtw.QComboBox()
        comobox_selectpressen.setFixedWidth(130)
        comobox_selectquality = qtw.QComboBox()
        comobox_selectquality.setFixedWidth(130)
        hblayout_widgetcombobox = qtw.QHBoxLayout()
        hblayout_widgetcombobox.addWidget(comobox_selectpressen)
        hblayout_widgetcombobox.addStretch(1)
        hblayout_widgetcombobox.addWidget(comobox_selectquality)
        hblayout_widgetcombobox.addStretch(30)
        hblayout_widgetcombobox.setAlignment(qtc.Qt.AlignTop)

        # mss
        heading_messschieber = qtw.QLabel("Mss stuff")
        button_messschiber = qtw.QPushButton("mss start")
        # M
        messchiber_heading = qtw.QLabel("want to start msss ?")
        hblayout_labelmsslayout = qtw.QHBoxLayout()
        hblayout_labelmsslayout.addWidget(messchiber_heading)
        hblayout_labelmsslayout.addStretch(2)
        hblayout_labelmsslayout.addWidget(quality_label)
        hblayout_labelmsslayout.addStretch(30)

        msss_messuungstartenbutton = qtw.QPushButton("msss start")
        hblayout_mssbuttonlayout = qtw.QHBoxLayout()
        hblayout_mssbuttonlayout.addWidget(msss_messuungstartenbutton)
        hblayout_mssbuttonlayout.addStretch(2)
        hblayout_mssbuttonlayout.addWidget(quality_label)
        hblayout_mssbuttonlayout.addStretch(30)

        # spacer  set custum vertical space
        verticalSpacer1 = qtw.QSpacerItem(10, 10, qtw.QSizePolicy.Minimum, vPolicy=qtw.QSizePolicy.Fixed)
        verticalSpacer2 = qtw.QSpacerItem(10, 5, qtw.QSizePolicy.Minimum, vPolicy=qtw.QSizePolicy.Fixed)
        verticalSpacer3 = qtw.QSpacerItem(10, 50, qtw.QSizePolicy.Minimum, vPolicy=qtw.QSizePolicy.Fixed)
        verticalSpacer4 = qtw.QSpacerItem(3, 1, vPolicy=qtw.QSizePolicy.Fixed)


        # main layout
        mainlayout = qtw.QVBoxLayout()
        mainlayout.setAlignment(qtc.Qt.AlignTop) # needed for custom spacers
        mainlayout.addSpacerItem(verticalSpacer1)
        mainlayout.addLayout(hblayout_labelcombo)
        mainlayout.addSpacerItem(verticalSpacer2)
        mainlayout.addLayout(hblayout_widgetcombobox)
        mainlayout.addSpacerItem(verticalSpacer3)

        mainlayout.addLayout(hblayout_labelmsslayout)
        mainlayout.addLayout(hblayout_mssbuttonlayout)
        # mainlayout.addSpacerItem(verticalSpacer1)


        self.setLayout(mainlayout)

        # your code ends here
        self.show()


if __name__ == '__main__':
    app = qtw.QApplication(sys.argv)
    w = SwellingwindowParent()
    sys.exit(app.exec_())

我的主布局是带有嵌套QHBoxlayout的QVBoxlayout的窗口,在顶部设置了两个标签,由于某些原因,pressen_label = qtw.QLabel(“ Choose A”)标签在...之后更改了其位置...

python pyqt pyqt5
1个回答
0
投票
描述您的错误可能很复杂(甚至浪费时间),例如quality_label被添加到3种布局中:hblayout_labelcombo.addWidget(quality_label)hblayout_labelmsslayout.addWidget(quality_label)hblayout_mssbuttonlayout.addWidget(quality_label)这是不合逻辑的。
© www.soinside.com 2019 - 2024. All rights reserved.