坑记--四维数组加入二维qt表

书接前文

pyqt表的代码结构分析:

三要素:

  • 赋值:
    我是谁?

  • 赋形:
    我长啥样?

  • 赋位
    我该在哪儿?

小栗子:
import sys
from PyQt5.QtWidgets import *

class Table(QWidget):
    def __init__(self):
        super(Table, self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle("QTableWidget例子")
        self.resize(400,300)
        layout=QHBoxLayout()

        #实现的效果是一样的,四行三列,所以要灵活运用函数,这里只是示范一下如何单独设置行列
        TableWidget=QTableWidget(4,3)

        # TableWidget = QTableWidget()
        # TableWidget.setRowCount(4)
        # TableWidget.setColumnCount(3)



        #设置水平方向的表头标签与垂直方向上的表头标签,注意必须在初始化行列之后进行,否则,没有效果
        TableWidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])
        #Todo 优化1 设置垂直方向的表头标签
        #TableWidget.setVerticalHeaderLabels(['行1', '行2', '行3', '行4'])

        #TODO 优化 2 设置水平方向表格为自适应的伸缩模式
        ##TableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        #TODO 优化3 将表格变为禁止编辑
        #TableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)

        #TODO 优化 4 设置表格整行选中
        #TableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)

        #TODO 优化 5 将行与列的高度设置为所显示的内容的宽度高度匹配
        #QTableWidget.resizeColumnsToContents(TableWidget)
        #QTableWidget.resizeRowsToContents(TableWidget)

        #TODO 优化 6 表格头的显示与隐藏
        #TableWidget.verticalHeader().setVisible(False)
        #TableWidget.horizontalHeader().setVisible(False)

        #TOdo 优化7 在单元格内放置控件
        # comBox=QComboBox()
        # comBox.addItems(['男','女'])
        # comBox.addItem('未知')
        # comBox.setStyleSheet('QComboBox{margin:3px}')
        # TableWidget.setCellWidget(0,1,comBox)
        #
        # searchBtn=QPushButton('修改')
        # searchBtn.setDown(True)
        # searchBtn.setStyleSheet('QPushButton{margin:3px}')
        # TableWidget.setCellWidget(0,2,searchBtn)


        #添加数据
        newItem=QTableWidgetItem('张三')
        TableWidget.setItem(0,0,newItem)

        newItem=QTableWidgetItem('男')
        TableWidget.setItem(0,1,newItem)

        newItem=QTableWidgetItem('160')
        TableWidget.setItem(0,2,newItem)

        layout.addWidget(TableWidget)

        self.setLayout(layout)
if __name__ == '__main__':
    app=QApplication(sys.argv)
    win=Table()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述
修改一下代码:

    def __init__(self):
        super(Table, self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle("QTableWidget例子")
        self.resize(400,300)
        layout=QHBoxLayout()
        TableWidget=QTableWidget(4,3)

        TableWidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])

        newItem=QTableWidgetItem('张三')
        TableWidget.setItem(0,0,newItem)
        
        comBox=QComboBox() # 我长啥样?  
        comBox.addItems(['男','女','为知']) # 我是谁?       
        comBox.setStyleSheet('QComboBox{margin:3px}') # 我长啥样?
        TableWidget.setCellWidget(0,1,comBox) # 我在哪儿?
        
        newItem=QTableWidgetItem('160')
        TableWidget.setItem(0,2,newItem)

        layout.addWidget(TableWidget)

        self.setLayout(layout)
if __name__ == '__main__':
    app=QApplication(sys.argv)
    win=Table()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

加入数组四维:

import sys
from PyQt5.QtWidgets import *
import numpy as np

class screwsTable(QWidget):
  def __init__(self):
    super(screwsTable, self).__init__()
    self.initUI()

  def initUI(self):
    self.setWindowTitle("screwsTable")
    self.resize(400, 300)
    data = np.array([[[[-3.3042624, -34.29845047, -92.78063965],
                       [-19.51710592, -70.68330269, -90.28064089]],

                      [[-3.3042624, -34.29845047, -92.78063965],
                       [12.31963874, -70.68330269, -87.78064089]]],

                     [[[-6.36676407, -37.65069962, -59.52416229],
                       [11.32474047, -70.07037429, -59.52416067]],

                      [[-6.36676407, -37.65069962, -59.52416229],
                       [-17.40294709, -72.80634454, -57.02416067]]]])
    self.fids = data.shape[0]
    layout = QHBoxLayout()
    TableWidget = QTableWidget(self.fids * 2, 3)
    fid = []
    fidlist = []
    P = []
    Ps = []
    itemsfids = []
    itemsfidlist = []
    itemsP = []
    vertebra = "T12"
    levels = (
      "C1", "C2", "C3", "C4", "C5", "C6", "C7", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "T10", "T11",
      "T12", "L1", "L2", "L3", "L4", "L5", "S1", "部位")
    level = []
    side = []
    for i in range(levels.index(vertebra), levels.index(vertebra) + self.fids):
      for ii, vv in enumerate(["左", "右"]):
        Pa = data[:, :, 0, :][i - levels.index(vertebra)][ii]
        # print(levels[i],vv,vvv,P)
        level.append(levels[i])
        side.append(vv)
        fidlist.append(levels[i] + vv)
        fid.append(ii)
        P.append(Pa)

    # TableWidget.setHorizontalHeaderLabels(['No','穿刺点','PSA','PTA','直径','钉长'])
    TableWidget.setHorizontalHeaderLabels(['No', '穿刺点', '点'])

    for i in range(self.fids * 2):
      Label = str(i + 1)
      qtLabel = QTableWidgetItem(Label)
      itemsfids.append(qtLabel)
      TableWidget.setItem(i, 0, qtLabel)

      Fid = str(fidlist[i])
      qtFid = QTableWidgetItem(Fid)
      itemsfidlist.append(qtFid)
      TableWidget.setItem(i, 1, qtFid)

      Ps = str(P[i])
      qtPSA = QTableWidgetItem(Ps)
      itemsP.append(qtPSA)
      TableWidget.setItem(i, 2, qtPSA)

    layout.addWidget(TableWidget)

    self.setLayout(layout)

if __name__ == '__main__':
  app = QApplication(sys.argv)
  win = screwsTable()
  win.show()
  sys.exit(app.exec_())

在这里插入图片描述

好!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jumbo Jing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值