Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2015 13:17:11

Novucu
Зарегистрирован: 2015-08-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Задание ширины таблицы в PyQt5

Здравствуйте. Пытаюсь создать небольшую таблицу в углу окна, но она занимает всё доступное место. При задании ширины столбцов и высоты строк введённые данные собираются в левый-верхний угол таблицы, однако сама таблица не уменьшается. Как явно задать её размер?
Код:

        gen=QTableWidget(3, len(dic))#dic - словарь
        gen.verticalHeader().hide()
        gen.horizontalHeader().hide()
        
        gen.setRowHeight(0, 15)
        gen.setRowHeight(1, 15)
        gen.setRowHeight(2, 15)
        t=0
        for n in range(len(dic)):
            d=dic.popitem()
            gen.setColumnWidth(t, 15)
            b=QTableWidgetItem(str(d[0][0]))
            b.setFont(QFont("Helvetica", 5))
            b.setTextAlignment(Qt.AlignHCenter)
            gen.setItem(0, t, b)
            b=QTableWidgetItem(str(d[0][1]))
            b.setFont(QFont("Helvetica", 5))
            b.setTextAlignment(Qt.AlignHCenter)
            gen.setItem(1, t, b)
            b=QTableWidgetItem(d[1])
            b.setFont(QFont("Helvetica", 5))
            b.setTextAlignment(Qt.AlignHCenter)
            gen.setItem(2, t, b)
            t+=1
          
        frame.addWidget(gen)

Офлайн

#2 Авг. 14, 2015 12:00:22

Novucu
Зарегистрирован: 2015-08-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Задание ширины таблицы в PyQt5

Задал размеры с помощью Widget'а. Всё работает, но это решение смахивает на костыль: класть таблицу в Layout, а его в Widget, а последний уже куда надо. Нет ли какого-либо более простого решения?
Код:

def Print_Creature(self, creature, frame):
        dic=creature.gene.copy()
        
        gen=QTableWidget(3, len(dic))
        gen.verticalHeader().hide()
        gen.horizontalHeader().hide()
        gen.setVerticalScrollBarPolicy(1)
        gen.setHorizontalScrollBarPolicy(1)
        font=QFont("Helvetica", 5)
        
        box=QWidget()
        box.setFixedHeight(65)
        box.setFixedWidth(16*len(dic))
        box.setFont(QFont("Helvetica", 5))
        
        boxL=QHBoxLayout()
        
        gen.setRowHeight(0, 15)
        gen.setRowHeight(1, 15)
        gen.setRowHeight(2, 15)
        iterator=0
        
        for n in range(len(dic)):
            item=dic.popitem()
            gen.setColumnWidth(iterator, 15)
            TableWidgetItem=QTableWidgetItem(str(item[0][0]))
            TableWidgetItem.setFont(font)
            gen.setItem(0, iterator, TableWidgetItem)
            TableWidgetItem=QTableWidgetItem(str(item[0][1]))
            TableWidgetItem.setFont(font)
            gen.setItem(1, iterator, TableWidgetItem)
            TableWidgetItem=QTableWidgetItem(item[1])
            TableWidgetItem.setFont(font)
            gen.setItem(2, iterator, TableWidgetItem)
            iterator+=1
        
        boxL.addWidget(gen)
        box.setLayout(boxL)
        frame.addWidget(box)

Кстати, box.minimumSize () при таком подходе всё равно выдаёт значения на порядок больше, чем размеры, занятые ячейками.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version