我有一個應用程序,我希望自定義小部件的大小不超過其內(nèi)容(即即使應用程序是全屏的,也不要拉伸按鈕、標簽等)。我問了這個關(guān)于如何實現(xiàn)這一點的問題,但是有一個問題:如果我將 QLabel 設(shè)置為自動換行,它不會占用盡可能多的空間。我仍然想占用盡可能少的空間,但只在屏幕空間的邊緣換行(即占用水平空間優(yōu)于垂直空間)。在 PyQt5 中有沒有辦法做到這一點?下面有示例代碼,我想要實現(xiàn)它的實際代碼在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條經(jīng)驗 獲得超10個贊
如果我正確理解您的問題,您希望這兩個按鈕保持原來的大小,并且在調(diào)整窗口大小時標簽水平延伸。在對當前代碼代碼進行最少修改的情況下實現(xiàn)此目的的一種方法是使用self.layout.addWidget(self.label1, 1, 0, 1, 3)
instead of將標簽擴展到第三個擴展列self.layout.addWidget(self.label1, 1, 0, 1, 2)
。
添加回答
舉報
0/150
提交
取消