博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pyqt删除控件的坑
阅读量:5915 次
发布时间:2019-06-19

本文共 982 字,大约阅读时间需要 3 分钟。

  hot3.png

最近在使用pyqt写个项目, 在remove控件后, 使用findChild仍然能找到控件, 调试很久, 才发现是pyqt的深坑....

很无奈

# 这里是关闭QTabWidget的标签def close_tab(self, index=-1):    if index == -1:        index = self.tab_widget.currentIndex()    if index > -1:        tab_widget_page = self.tab_widget.widget(index)        print(tab_widget_page)        if tab_widget_page:            tab_widget_page.close()        self.tab_widget.removeTab(index)# 这里检测是否已经打开tab page, 如果已打开, 那么切换def use(self, name):    # 关键就在findChild这里, 无论removeTab, tabRemove, close均无效    tab_widget_page = self.tab_widget.findChild((QtGui.QWidget,), _fromUtf8(name))    if tab_widget_page is None:        return False    tab_widget_page_index = self.tab_widget.indexOf(tab_widget_page)    if tab_widget_page_index < 0:        return False    return self.tab_widget.setCurrentIndex(tab_widget_page_index)

不得不说这是神坑, 下面来说下解决方案, 其实很简单

import sip# removeTab后使用sip的deletesip.delete(tab_widget_page)

此方法和c++的delete(tab_page)同理

转载于:https://my.oschina.net/yehun/blog/1813698

你可能感兴趣的文章
Python中pyc文件的用途
查看>>
eclipse调试远程Tomact
查看>>
[Swift]快速排序算法
查看>>
presto中的名词
查看>>
【致青春】开垦出的IT路
查看>>
解决apache服务器下载.dmg文件乱码页码问题
查看>>
四种方案解决ScrollView嵌套ListView问题
查看>>
实例讲解PAT配置
查看>>
centos下network和NetworkManager冲突的解决方法
查看>>
系分----第十九章(系统分析设计与案例分析)
查看>>
Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程
查看>>
ccnp大型企业综合案例分析2
查看>>
odoo二次开发小知识点
查看>>
linux基础命令 rm
查看>>
多线程 -线程面试题(一)
查看>>
OpenStack如何实现高可用集群介绍
查看>>
Java基础学习总结(1)——equals方法
查看>>
cvLoadImage报错
查看>>
ubuntu chromium字体发虚的解决方法及字体美化
查看>>
mysql
查看>>