您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在QLabel上设置自动换行符打破了窗口的大小限制

5b51 2022/1/14 8:20:14 python 字数 4044 阅读 455 来源 www.jb51.cc/python

我有以下代码: 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 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

我找到了一个针对此特定问题here解决方法提示.它适用于我的示例以及我的应用程序:
self.setMinimumSize(self.sizeHint()).

然后代码如下所示:

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_())

总结

以上是编程之家为你收集整理的在QLabel上设置自动换行符打破了窗口的大小限制全部内容,希望文章能够帮你解决在QLabel上设置自动换行符打破了窗口的大小限制所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶