Как выровнять QPushButton по центру, когда присутствует QProgressBar? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь поместить QProgressBar ниже QPushButton и выровнять их по центру QVBoxLayout, но по какой-то причине кнопка остается выровненной по левому краю, когда присутствует индикатор выполнения, и по центру, если онаэто не так.

Я попытался установить выравнивание всех родительских виджетов и макетов на Qt.AlignCenter, но индикатор выполнения продолжает заставлять кнопку двигаться влево.

connect_box = QVBoxLayout()
connect_box.setAlignment(Qt.AlignCenter)
connect_button = QPushButton('Connect')
connect_button.setFixedSize(120, 30)
connect_progress = QProgressBar()
connect_progress.setRange(0, 10000)
connect_progress.setValue(0)
connect_box.addWidget(connect_button)
connect_box.addWidget(connect_progress)
connect_box.setContentsMargins(0, 20, 0, 0)

Я ожидаюкнопка для выравнивания по центру при добавлении индикатора выполнения.

1 Ответ

0 голосов
/ 29 января 2019

Попробуйте:

import sys
from PyQt5.QtGui     import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore    import *

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        connect_button = QPushButton('Connect')
        connect_button.setFixedSize(120, 30)

        connect_progress = QProgressBar()
        connect_progress.setRange(0, 10000)
        connect_progress.setValue(0)

        connect_box = QVBoxLayout(self)
        connect_box.setAlignment(Qt.AlignCenter)  

        connect_box.addWidget(connect_button, alignment=Qt.AlignCenter)  # < ----

        connect_box.addWidget(connect_progress)
        connect_box.setContentsMargins(0, 20, 0, 0)


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

enter image description here

...