Найти - Пользователи
Полная версия: Задание ширины таблицы в PyQt5
Начало » GUI » Задание ширины таблицы в PyQt5
1
Novucu
Здравствуйте. Пытаюсь создать небольшую таблицу в углу окна, но она занимает всё доступное место. При задании ширины столбцов и высоты строк введённые данные собираются в левый-верхний угол таблицы, однако сама таблица не уменьшается. Как явно задать её размер?
Код:
        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)
Novucu
Задал размеры с помощью 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 () при таком подходе всё равно выдаёт значения на порядок больше, чем размеры, занятые ячейками.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB