gpt4 book ai didi

python - PyQt 保持纵横比固定

转载 作者:行者123 更新时间:2023-12-03 17:30:49 28 4
gpt4 key购买 nike

我正在研究 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 中不再有效了吗?我错过了什么吗?

最佳答案

如果我理解您的问题,您应该尝试在主窗口内使用布局。
我这样做了:

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent= None):
super().__init__(parent)
self.central_widget = QtWidgets.QWidget()
self.central_layout = QtWidgets.QVBoxLayout()
self.setCentralWidget(self.central_widget)
self.central_widget.setLayout(self.central_layout)
# Lets create some widgets inside
self.label = QtWidgets.QLabel()
self.list_view = QtWidgets.QListView()
self.push_button = QtWidgets.QPushButton()
self.label.setText('Hi, this is a label. And the next one is a List View :')
self.push_button.setText('Push Button Here')
# Lets add the widgets
self.central_layout.addWidget(self.label)
self.central_layout.addWidget(self.list_view)
self.central_layout.addWidget(self.push_button)

if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
如果您调整窗口大小,其中的小部件也会调整大小。
enter image description here
enter image description here

关于python - PyQt 保持纵横比固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54536304/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com