Дана простая программа. Выводится текст (QLabel) и кнопка. По нажатию на кнопку текст меняется на более длинный. По идее, размер виджета должен автоматически меняться, но этого не происходит, а, наоборот, текст обрезается. В документации для этого виджета QLabel пробовал разные атрибуты устанавливать, типа setScaledContents, но не помогает. Что это за волшебный атрибут такой?
Да, вот сама программа:
#!/usr/bin/env python
# test.py
import sys
from PyQt4 import QtGui, QtCore
class Widget(QtGui.QWidget):
def __init__(self):
super(Widget, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('TEST')
self.resize(200, 100)
self.label = QtGui.QLabel(self)
self.label.move(20, 20)
self.label.setText('Hello')
# Какой атрибут установить, чтобы размер подгонялся под текст?
# self.label.setScaledContents(True)
button = QtGui.QPushButton('Click me', self)
button.move(20, 50)
self.connect(button, QtCore.SIGNAL('clicked()'),
self.function)
def function(self):
self.label.setText('Jack Sparrow!')
self.label.adjustSize() # без этого текст больший предыдущего будет обрезаться.
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
Пользователь решил продолжить мысль 22 Июля 2013, 20:36:49:
Нашел! Это атрибут adjustSize(). Только для QLabel он не указан. Пошел к его родителю QFrame, а потом к "дедушке" QWidget, там и указан такой атрибут.
Даже не знаю: это недостаток или особенность документации?