为了账号安全,请及时绑定邮箱和手机立即绑定

PyQt5 中的标签自动换行不会占用空间

PyQt5 中的标签自动换行不会占用空间

素胚勾勒不出你 2023-02-12 19:06:28
我有一个应用程序,我希望自定义小部件的大小不超过其内容(即即使应用程序是全屏的,也不要拉伸按钮、标签等)。我问了这个关于如何实现这一点的问题,但是有一个问题:如果我将 QLabel 设置为自动换行,它不会占用尽可能多的空间。我仍然想占用尽可能少的空间,但只在屏幕空间的边缘换行(即占用水平空间优于垂直空间)。在 PyQt5 中有没有办法做到这一点?下面有示例代码,我想要实现它的实际代码在https://github.com/Jachdich/blechat-changeme上,如果它有用的话。from PyQt5 import QtWidgets, QtGui, QtCoreclass CustomWidget(QtWidgets.QWidget):    def __init__(self):        super().__init__()        self.layout  = QtWidgets.QGridLayout()        self.button1 = QtWidgets.QPushButton("Button A")        self.button2 = QtWidgets.QPushButton("Button B")        self.label1  = QtWidgets.QLabel("Long label that can span multiple columns this is actually a long message tbh and it needs word wrap really.")        self.label1.setWordWrap(True)                self.layout.addWidget(self.button1, 0, 0)        self.layout.addWidget(self.button2, 0, 1)        self.layout.addWidget(self.label1, 1, 0, 1, 2)        self.setLayout(self.layout)        self.layout.setColumnStretch(2, 1)        self.layout.setRowStretch(2, 1)class App(QtWidgets.QWidget):    def __init__(self):        super().__init__()        self.cw = CustomWidget()        self.layout = QtWidgets.QVBoxLayout()        self.layout.addWidget(self.cw)        self.setLayout(self.layout)        self.show()QtWidgets.QApplication.setStyle(QtWidgets.QStyleFactory.create("Fusion"))app = QtWidgets.QApplication([])win = App()status = app.exec_()提前致谢。
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

如果我正确理解您的问题,您希望这两个按钮保持原来的大小,并且在调整窗口大小时标签水平延伸。在对当前代码代码进行最少修改的情况下实现此目的的一种方法是使用self.layout.addWidget(self.label1, 1, 0, 1, 3)instead of将标签扩展到第三个扩展列self.layout.addWidget(self.label1, 1, 0, 1, 2)


//img1.sycdn.imooc.com//63e8c855000155fc04410136.jpg

查看完整回答
反对 回复 2023-02-12
  • 1 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信