【问题标题】:Setting row Span in QTableView using Python?使用 Python 在 QTableView 中设置行跨度?
【发布时间】:2017-06-04 03:23:39
【问题描述】:

我正在尝试在 QTableView 的第二列上设置行跨度,但不知何故我错过了一些东西。我只能得到 A 和 B,但不能得到 C。另外,我收到警告 QTableView::setSpan: span 不能重叠QTableView::setSpan: single cell span 不会被添加

我的代码 sn-p 是:-

startspan = 0
for i, tcname in enumerate(tcfilename):
    if tcfilename[i]:
        if i > 0:
            print '#######################'
            print 'startspan = '+str(startspan)+' i = '+str(i)
            if tcname == tcfilename[i-1]:
                #setSpan (row, column, rowSpan, columnSpan)
                print 'if (from_row, till_row) '+str(startspan)+'  '+str(i)
                table_view.setSpan(startspan, 1, i, 1);
            elif tcname != tcfilename[i-1]:
                print 'Else no span (from_row, till_row) '+str(startspan)+'  '+str(i)
                table_view.setSpan(startspan, 1, i, 1);
                if i == 1:
                    startspan = 0
                else:
                    startspan = i
    else:
        break

【问题讨论】:

    标签: python pyqt pyside qtableview


    【解决方案1】:

    用下面简单的两行代码做到这一点

    for toRow, tcname in enumerate(tcfilename):
        table_view.setSpan(tcfilename.index(tcname), 1, tcfilename.count(tcname), 1)
    

    【讨论】:

      【解决方案2】:

      我做了一个漂亮的小函数来解决这个问题.. 有递归但随后优化它没有递归.. 给它一个表格和一个数据集

      def my_span_checker(self, my_data, table):
      
      for i in range(len(my_data)):
          my_item_count = 0
          my_label = table.item(i, 0).text()
          for j in range(len(my_data)):
              if table.item(j, 0).text() == my_label:
                  my_item_count += 1
          if my_item_count != 1:
              table.setSpan(i, 0, my_item_count, 1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        • 2019-12-21
        • 2012-04-30
        相关资源
        最近更新 更多