LINUX.ORG.RU

Настройка высоты строк в таблице

 , ,


0

1

Добрый день.

Я недавно начал изучать PyQt. Сейчас создаю таблицу. Столбцы должны быть одинакового размера, высота строк настраивается под объем текста. Код такой:

#!/usr/bin/python3

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

font_family='LiberationMono'
font_size=14
width=1024
height=768

article='''Макаров	go (в сочетании с последующим герундием выражает действие, соответствующее значению герундия)			
Габон (государство в юго-западной Африке)	присест (Баян)	заход (I cannot do it in one go - Я не могу сделать это за один заход / с первого захода Баян)	готовый к запуску
'''
article=article.splitlines()
for i in range(len(article)):
	article[i]=article[i].split('\t')

app = QApplication(sys.argv)
table = QTableWidget()
tableItem = QTableWidgetItem()

table.resize(width,height)
table.setRowCount(len(article))
table.setColumnCount(len(article[0]))
# Merge columns 1-4 of row 0
table.setSpan(0,1,1,4)
standard_col = width/len(article[0])
for i in range(len(article[0])):
	table.setColumnWidth(i,standard_col)
for i in range(len(article)):
	for j in range(len(article[i])):
		elem = QTableWidgetItem(article[i][j])
		table.setItem(i,j,elem)
		elem.setTextAlignment(Qt.AlignLeft | Qt.AlignTop)
		elem.setFont(QFont(font_family,font_size))
	table.verticalHeader().setSectionResizeMode(i,QHeaderView.ResizeToContents)
table.show()
app.exec_()

Проблема в том, что высота строк фактически изменяется (ResizeToContents) при вставке текста. После слияния колонок 1-4 строки 0 высота этой строки остается той же, что и до слияния. Я пробовал ставить ResizeToContents и до вставки текста, и вне цикла вставки, но это не помогает.

Вопрос вдогонку - а почему колонки не полностью помещаются в окно? Если с помощью стрелок переместиться в последнюю колонку, то можно заметить, что в первой колонке текст урезается на 1 символ, иногда больше.

Deleted

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.