我有以下代碼:設置自動換行打破了大小限制爲窗口
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
此問題在[文檔](http://qt-project.org/ doc/qt-5/layout.html#layout-issues)。還有一個[bug報告](https://bugreports.qt-project.org/browse/QTBUG-37673)。 – thuga 2014-09-03 12:58:11
@thuga - 哇!謝謝我不會說等等。 – Fenikso 2014-09-03 13:01:08
@thuga錯誤報告鏈接丟失,也許是這一個:https://bugreports.qt.io/browse/QTBUG-37673 – ismailsunni 2017-12-07 10:01:58