在QLabel上设置自动换行符打破了窗口的大小限制
发布时间:2020-12-16 21:29:00 所属栏目: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 tellus in ex elementum,vitae rutrum enim vestibu
我有以下代码:
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_()) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |