Добрый день.
Я недавно начал изучать 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 символ, иногда больше.