我有一个应用程序,我希望自定义小部件的大小不超过其内容(即即使应用程序是全屏的,也不要拉伸按钮、标签等)。我问了这个关于如何实现这一点的问题,但是有一个问题:如果我将 QLabel 设置为自动换行,它不会占用尽可能多的空间。我仍然想占用尽可能少的空间,但只在屏幕空间的边缘换行(即占用水平空间优于垂直空间)。在 PyQt5 中有没有办法做到这一点?下面有示例代码,我想要实现它的实际代码在https://github.com/Jachdich/blechat-changeme上,如果它有用的话。
from PyQt5 import QtWidgets, QtGui, QtCore
class 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_()
提前致谢。
守候你守候我
相关分类