似乎大多数人都在问如何QMainWindow
调整其内容的大小 - 我有相反的问题,我的 MainWindow确实调整了大小,我不知道为什么。
当我将我的文本设置QLabel
为更长的文本时,我的主窗口突然变大了,我不知道为什么会发生这种情况。
以下示例代码基本包含:
- 一个
QMainWindow
- A
QWidget
作为中心小部件- 作为
QVBoxLayout
那个的孩子LabelBar
里面那个。
- 作为
- A
这LabelBar
是一个QWidget
,它又包含:
- 一个
QHBoxLayout
- 里面有两个
QLabel
。
- 里面有两个
一秒钟后,aQTimer
将标签设置为更长的文本以说明问题。
PyQt 示例代码:
from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QLabel, QWidget,
QMainWindow, QVBoxLayout, QSizePolicy)
from PyQt5.QtCore import QTimer
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
cwidget = QWidget(self)
self.setCentralWidget(cwidget)
self.resize(100, 100)
vbox = QVBoxLayout(cwidget)
vbox.addWidget(QWidget())
self.bar = LabelBar(self)
vbox.addWidget(self.bar)
timer = QTimer(self)
timer.timeout.connect(lambda: self.bar.lbl2.setText("a" * 100))
timer.start(1000)
class LabelBar(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
hbox = QHBoxLayout(self)
self.lbl1 = QLabel(text="eggs")
hbox.addWidget(self.lbl1)
self.lbl2 = QLabel(text="spam")
hbox.addWidget(self.lbl2)
if __name__ == '__main__':
app = QApplication([])
main = MainWindow()
main.show()
app.exec_()