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