Установить вертикальное и горизонтальное выравнивание в PySide2 - PullRequest
0 голосов
/ 20 ноября 2018

Метод QSplashScreen.showMessage() принимает флаг выравнивания, т.е. Qt.AlignLeft.Каков синтаксис для установки флага горизонтального и вертикального выравнивания?Все попытки выдают ошибку «слишком много переменных».

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Qt :: Alignment это QFlags , которые используют побитовые операторы &, | и ^, в случае, если вы хотите объединить флаги, вы должны использовать * Оператор 1008 *, в следующей части приведу пример:

import random
from PyQt5 import QtCore, QtGui, QtWidgets

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    pixmap = QtGui.QPixmap(640, 480)
    h_alignments = (QtCore.Qt.AlignLeft, QtCore.Qt.AlignRight, QtCore.Qt.AlignHCenter, QtCore.Qt.AlignJustify)
    v_alignments = (QtCore.Qt.AlignTop, QtCore.Qt.AlignBottom, QtCore.Qt.AlignVCenter, QtCore.Qt.AlignBaseline)
    pixmap.fill(QtGui.QColor("green"))
    w  = QtWidgets.QSplashScreen(pixmap)

    def on_timeout():
        a = random.choice(h_alignments) | random.choice(v_alignments)
        w.showMessage("Stack Overflow", alignment=a)

    timer = QtCore.QTimer(interval=100, timeout=on_timeout)
    timer.start()
    QtCore.QTimer.singleShot(10*1000, QtWidgets.QApplication.quit)
    w.show()
    sys.exit(app.exec_())
0 голосов
/ 20 ноября 2018

Начиная с документов Qt5 , флаги выравнивания являются битовыми полями, поэтому для их объединения вы используете оператор | (например, Qt.AlignLeft | Qt.AlignTop для выравнивания «по левому верхнему углу»)

...