在QLabel上设置自动换行符打破了窗口的大小限制
发布时间:2020-05-23 20:58:19 所属栏目:Python 来源:互联网
导读:我有以下代码: import sysfrom PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.QtGui import *TEXT = Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam malesuada tel
|
我有以下代码: 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,**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)
self.layout.addWidget(self.text,1,0)
self.layout.setContentsMargins(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 解决方法正如@thuga在评论中提出的那样,问题在 docs和 reported中提到,显然是“不会/不能解决”决议.我找到了一个针对此特定问题here的解决方法的提示.它适用于我的示例以及我的应用程序: 然后代码如下所示: import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
TEXT = "Lorem ipsum dolor sit amet,self)
self.label.setWordWrap(True)
self.text = QTextEdit(self)
self.text.setMinimumSize(480,800)
self.text.setSizePolicy(QSizePolicy.Expanding,5)
self.layout.setSpacing(5)
self.setLayout(self.layout)
self.setMinimumSize(self.sizeHint())
self.show()
#==============================================================================
if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
sys.exit(app.exec_()) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
