python - QWebView 布局不正确

标签 python layout pyqt

即使我为 QWebView 设置了几何形状,它也会占据整个屏幕的左侧。

alt text 更糟糕的是,如果我最大化窗口,两个小部件之间会有间隙

alt text 下面是我写的代码:

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *

class twsearchbox(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        hbx = QHBoxLayout()        
        self.setLayout(hbx)
        self.resize(1024,800)
        self.setWindowTitle('layout test')

        tbx = QTextEdit()
        tbx.setGeometry(0,0, 300, 550)
        tbx.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
        hbx.addWidget(tbx, 0 , Qt.AlignLeft)

        wv = QWebView()
        wv.load(QUrl('twsearch_template.html'))
        wv.setGeometry(0,0,300,550)
        wv.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
        hbx.addWidget(wv, 0 , Qt.AlignLeft)

最佳答案

我在代码(c++)中对此进行了研究,发现它有点令人费解,直到最后我查看了QWebView 的源代码。 QWebView::sizeHint() 似乎被硬编码为 800 x 600 (Qt 4.6)。

这对我来说似乎有点奇怪,但我不确定要报告它的错误。如果有人可以发表评论来确认或否认它的正确性,那就太好了:)

在任何情况下,您都应该能够通过根据需要设置最小/最大高度/宽度来覆盖此行为。

此外,为了解释您看到的其他行为,即使 QWebView 是您指定的宽度 (300),您也会看到一个间隙,因为布局试图将水平空间分成相等的大小. QWebView 默认为 800 宽,布局从左框窃取空间以满足右框所需的大小。如果屏幕足够宽,当您水平拉伸(stretch)窗口时,您最终会看到两半的大小相等。

关于python - QWebView 布局不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951915/

相关文章:

python - PyQt 访问动态创建的 Label 和 LineEdit

c# - Python 和 C# 之间的通信

python - 如何找到直线和轮廓之间的交点

python - 从 SPARQL 查询结果中排除空白节点

html - CSS 在盒子模型中保留了一个未知空间

java - 如何从左角到右角创建jlist?

python - PyQt5 在我访问过的同一目录上重新打开

python : IndexError: tuple index out of range

javascript - 带有预览的不寻常的响应式拆分 slider

python - PyQt5 - 调整标签大小以填充整个窗口