Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: PyQt4 - может ли виджет QLabel автоматически подгонять свой размер под текст?  (Прочитано 3948 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Дана простая программа. Выводится текст (QLabel) и кнопка. По нажатию на кнопку текст меняется на более длинный. По идее, размер виджета должен автоматически меняться, но этого не происходит, а, наоборот, текст обрезается. В документации для этого виджета QLabel пробовал разные атрибуты устанавливать, типа setScaledContents, но не помогает. Что это за волшебный атрибут такой?

Да, вот сама программа:

Код: (Python) [Выделить]
#!/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, там и указан такой атрибут.

Даже не знаю: это недостаток или особенность документации?
« Последнее редактирование: 22 Июля 2013, 20:41:31 от Jack Sparrow »
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
В GTK документация устроена таким же образом - немного неудобно, но иначе никак это не сделаешь - иначе для каждого виджета будет несколько десятков одинаковых методов и т.п., что будет сильно мешать разбираться в специфических для него.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Интересно, а если делать в Qt Desinger или что-то-там, то там будут подсказки со всеми атрибутами и методами, как в Visual Studio или Xcode?
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Не знаю, вот и проверьте =)
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн andrew_bye

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2698
    • Просмотр профиля
Даже не знаю: это недостаток или особенность документации?

Это особенность документации. Вот берем, например, упомянутый QLabel. Для того чтобы получить все его возможные свойства (в т.ч. и унаследованные), достаточно кликнуть по ссылке List of all members, including inherited members.

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Да, но это Qt документация для C++. А я смотрел для именно для PyQt с riverbankcomputing.com. Понятно, что похоже, но...

А дизайнер у меня не установлен. Но, думаю, что подсказки есть. Продукт-то серьезный.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Jack Sparrow,
да все там есть, по крайней мере для C++ и help по методам  и автодополнение...
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

 

Страница сгенерирована за 0.089 секунд. Запросов: 25.