我有一个应用程序,我希望自定义小部件的大小不超过其内容(即即使应用程序是全屏的,也不要拉伸按钮、标签等)。我问了这个关于如何实现这一点的问题,但是有一个问题:如果我将 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)
。
添加回答
举报
0/150
提交
取消