Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python小部件和sizepolicy_Python - Fatal编程技术网

Python小部件和sizepolicy

Python小部件和sizepolicy,python,Python,我正在使用PyQt5。我创建了一个窗口,然后添加了一个小部件。并将小部件的sizepolicy设置为水平扩展,而不是垂直扩展。我故意没有在主窗口顶部添加任何QLayout()来检查sizepolicy是否正常工作。令我惊讶的是,它没有,但当我添加QLayout()时,它确实起了作用 为什么会让我惊讶?我查看了QT的官方文档,上面说: 如果有一个QLayout管理此小部件的子项,则使用该布局指定的大小策略。如果没有此类QLayout,则使用此函数的结果 (我不清楚他们指的是什么功能) 我从文档

我正在使用PyQt5。我创建了一个窗口,然后添加了一个小部件。并将小部件的sizepolicy设置为水平扩展,而不是垂直扩展。我故意没有在主窗口顶部添加任何QLayout()来检查sizepolicy是否正常工作。令我惊讶的是,它没有,但当我添加QLayout()时,它确实起了作用

为什么会让我惊讶?我查看了QT的官方文档,上面说:

如果有一个QLayout管理此小部件的子项,则使用该布局指定的大小策略。如果没有此类QLayout,则使用此函数的结果

(我不清楚他们指的是什么功能)

我从文档中得到的是,如果在窗口顶部有一个QLayout,然后布局包含更多的小部件,那么布局包含的小部件的大小策略将由QLayout()控制。如果没有QLayout(),则使用与小部件的sizepolicy相关的单个函数

在我的代码中,我试图实现那个场景。但根据我对官方文件的理解,它不起作用

from PyQt5 import QtWidgets

app = QtWidgets.QApplication([])
window = QtWidgets.QWidget()
window.setGeometry(50, 50, 500, 300)
menu_bar = QtWidgets.QMenuBar(window)
menu_bar.setGeometry(0, 0, 500, 22)
size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, 
QtWidgets.QSizePolicy.Fixed)
menu_bar.setSizePolicy(size_policy)
menu_bar.addMenu("File")
menu_bar.addMenu("Edit")

# lay = QtWidgets.QHBoxLayout()
# lay.addWidget(menu_bar)
# window.setLayout(lay)

window.show()
app.exec()

我不知道为什么要将布局应用于菜单栏。通常,您只需添加项目即可完成。我喜欢教程。它们短小精悍,切中要害。他/她有一个朋友。此外,您还可以从Qt Designer了解布局,Qt Designer通常与PyQtI捆绑在一起。我不确定您为什么要将布局应用于菜单栏。通常,您只需添加项目即可完成。我喜欢教程。它们短小精悍,切中要害。他/她有一个朋友。此外,您还可以从Qt设计器中了解布局,Qt设计器通常与PyQt捆绑在一起