pyqt5 TableWidget逐行尾部添加,逐列写入,双for嵌套 绝对原创,拒绝抄袭! 搜索了好多篇博客论坛均无找到此功能,只能靠自己了。 try: for row_name in glo.dict.keys(): if glo.dict[row_name][0] == False: # 当字典数据为false表示我不需要此项测试,生成tablewidget continue if glo.dict[row_name][0] == True: # true ,我需要此项测试,(尾部)生成一行 tablewidget 在PyQt5中,`QTableWidget`是一个用于展示表格数据的控件,它提供了丰富的功能,如添加、编辑和删除行与列。在给定的描述中,开发者需要实现一个功能,即根据字典数据动态地在`QTableWidget`的尾部逐行添加数据,并逐列写入。下面我们将详细解释如何实现这个功能。 我们要理解代码的逻辑结构。这里使用了一个全局字典`glo.dict`,它的键是行名,值是一个列表,其中第一个元素表示该行是否需要显示在表格中(True或False)。代码通过遍历`glo.dict`的键来决定哪些行应该被添加到表格中。 ```python try: for row_name in glo.dict.keys(): if glo.dict[row_name][0] == False: # 如果字典值的第一个元素为False,跳过此行 continue if glo.dict[row_name][0] == True: # 如果字典值的第一个元素为True,添加此行 # ... ``` 接着,如果当前行需要添加,我们获取当前表格的行数`row_cnt`,并使用`insertRow()`方法在尾部插入一行新行: ```python row_cnt = self.mytableWidget.rowCount() self.mytableWidget.insertRow(row_cnt) ``` 然后,我们需要获取表格的列数`column_cnt`,并遍历每一列,根据字典中的数据填充单元格: ```python column_cnt = self.mytableWidget.columnCount() for evercolumn in range(column_cnt): # ... ``` 对于列0,我们放入行名`row_name`,对于其他列,我们放入字典中对应的数据: ```python if evercolumn == 0: item1 = QTableWidgetItem(str(row_name)) else: item1 = QTableWidgetItem(str(glo.dict[row_name][evercolumn])) self.mytableWidget.setItem(row_cnt, evercolumn, item1) ``` 使用`resizeColumnsToContents()`方法调整列宽以适应内容,这有助于提高表格的可读性: ```python self.mytableWidget.resizeColumnsToContents() ``` 值得注意的是,开发者还可以选择使用`resizeRowsToContents()`来自动调整行高,但在这个例子中,它被注释掉了。 整个过程是通过一个双层嵌套的`for`循环完成的,外层循环遍历行,内层循环遍历列,从而实现动态添加数据到`QTableWidget`中。这个功能对于处理动态数据或根据条件展示数据的场景非常有用。 总结来说,实现PyQt5 `QTableWidget`逐行尾部添加和逐列写入的关键步骤包括: 1. 遍历字典的键(行名),检查对应的值的第一个元素是否为True。 2. 在表格尾部插入新行。 3. 获取列数并遍历所有列。 4. 根据列索引填充单元格内容。 5. 调整列宽以适应内容。 这个方法确保了只显示需要的行,并且数据能正确地根据字典结构填充到表格中。在实际应用中,可以根据需求调整这个逻辑,例如增加错误处理,或者优化数据加载性能。
- 粉丝: 4
- 资源: 952
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
评论0