【发布时间】:2020-12-29 14:07:18
【问题描述】:
我按照应有的方式填充了 QTableWidget() :) 现在我遇到了 col span 的问题。
左图显示了每一列的正确大小,右图是我在引入第一行“跨越”后得到的,这不是我想要的。
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QAction, QTableWidget, QTableWidgetItem, QVBoxLayout
class MakeStrip(QWidget):
def __init__(self, anno , mese):
super().__init__()
self.initUI(anno, mese)
def initUI(self, anno, mese):
self.title = "MAMbo - Strips di '%s' '%s' "%(mese, anno)
self.setWindowTitle(self.title)
self.setGeometry(50, 100, 250, 800)
MakeStrip.callTable(self, anno, mese)
self.layout = QVBoxLayout()
self.layout.addWidget(self.tableWidget)
self.setLayout(self.layout)
# Show widget
self.show()
def callTable(self, anno, mese):
anno = '2021'
self.alphamese = 'January'
# Create table
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(10)
self.tableWidget.setColumnCount(3)
self.tableWidget.horizontalHeader().setVisible(False)
header = self.tableWidget.horizontalHeader()
header.setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.verticalHeader().setDefaultSectionSize(13)
self.vol_name = 'MAZZONI'
zz=1
self.tableWidget.setSpan(0, 0, 1, 3)
newItem = QTableWidgetItem(self.vol_name)
newItem.setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter)
self.tableWidget.setItem(0, 0, newItem)
self.tableWidget.setSpan(1, 0, 1, 3)
newItem = QTableWidgetItem(self.alphamese)
newItem.setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter)
self.tableWidget.setItem(1, 0, newItem)
while zz <= 10:
self.dow = 'do'+str(zz)
self.value = 'AAAAAAAA' +str(zz)
self.tableWidget.setItem(zz+1, 0, QtWidgets.QTableWidgetItem(str(zz)))
self.tableWidget.setItem(zz+1, 1, QtWidgets.QTableWidgetItem(self.dow))
item = QtWidgets.QTableWidgetItem(self.value)
item.setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter)
self.tableWidget.setItem(zz+1, 2, item)
zz += 1
pippo = 0
#return
if __name__ == '__main__':
app = QApplication(sys.argv)
anno = '2021'
mese = 'January'
ex = MakeStrip(anno, mese)
sys.exit(app.exec_())
如何获取第二张图片的第一列,其大小与左侧图片中的一样?
附:第二行将包含另一个跨区信息
【问题讨论】:
-
我能做的就是发布整个代码
-
这不是 MRE,因为有很多东西没有定义
-
这个应该是MRE。 :)
-
这似乎是一个错误:bugreports.qt.io/browse/QTBUG-89116 可能有解决方法,但它可能需要重新实现
sizeHintForColumn()或使用项目委托。 (PS:请不要使用“pippo”:-P)
标签: python pyqt pyqt5 qtablewidget