【发布时间】:2014-09-03 12:13:40
【问题描述】:
我有以下代码:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " \
"Nullam malesuada tellus in ex elementum, vitae rutrum enim vestibulum."
#==============================================================================
class Window(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
# Widgets
self.label = QLabel(TEXT, self)
# self.label.setWordWrap(True)
self.text = QTextEdit(self)
self.text.setMinimumSize(480, 320)
self.text.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
# Layout
self.layout = QGridLayout()
self.layout.addWidget(self.label, 0, 0)
self.layout.addWidget(self.text, 1, 0)
self.layout.setContentsMargins(5, 5, 5, 5)
self.layout.setSpacing(5)
self.setLayout(self.layout)
self.adjustSize()
self.show()
#==============================================================================
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
sys.exit(app.exec_())
它按预期工作,产生一个窗口,不能将其调整为更小:
但是,当我取消注释 self.label.setWordWrap(True) 行时,这些约束似乎消失了。我可以将窗口调整为更小,完全破坏布局,因为QTextEdit 仍然保留其大小约束:
我尝试使用self.setMinimumSize(self.size()) 解决此问题。这适用于这个特定的示例,但是如果大小更大,例如self.text.setMinimumSize(480, 800),则会中断。即使在创建窗口时,这也会导致窗口太小,因此 setMinimumSize 无济于事:
有没有办法修复它并使窗口/布局仍然匹配QTextEdit 的最小大小,即使启用了自动换行?
版本信息:
OS: Windows-7-SP1 (32bit)
Python: 3.4.1
PyQt: 5.3.1
Qt: 5.3.1
【问题讨论】:
-
docs 中提到了这个问题。还有一个bug report。
-
@thuga - 哇!谢谢。我没想到会这样。
-
@thuga 错误报告链接丢失,可能是这个:bugreports.qt.io/browse/QTBUG-37673