PyQt сохраняет соотношение сторон фиксированным - PullRequest
0 голосов
/ 05 февраля 2019

Я работаю над PyQt5 GUI, до сих пор у меня только что был опыт работы со скриптами Python, и я не углублялся в создание пользовательских интерфейсов.

GUI придется использовать на разных экранах (возможно также некоторые старые экраны с соотношением сторон 4: 3), и они должны выглядеть красиво в разных размерах.Теперь мой подход к упрощению моей жизни заключался в применении фиксированного соотношения сторон окна и изменении размера различных элементов в соответствии с размером окна.

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent= None):
        super().__init__(parent)
        self.form_widget = FormWidget(self)
        self.setCentralWidget(self.form_widget)
        self.resize(200, 400)
        self.sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        self.sizePolicy.setHeightForWidth(True)
        self.setSizePolicy(self.sizePolicy)

    def heightForWidth(self, width):
        return width * 2

class FormWidget(QtWidgets.QWidget):

    def __init__(self, parent):
        super().__init__(parent)

    def resizeEvent(self, event):
        f = self.font()
        temp = event.size().height()
        f.setPixelSize(temp / 16)
        self.setFont(f)

        return super().resizeEvent(event)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)

    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

Изменение размеров элементов в соответствии с размером окна работает нормально, но окносоотношение сторон не сохраняется вообще.Я скопировал этот подход с heightForWidth из старых потоков PyQt4.Разве этот подход больше не работает в PyQt5?Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...