我正在用PyQt5编写一个GUI;它应该是一个有多个选项卡的主窗口。在隐藏/显示给定选项卡的代码部分,我遇到了以下错误:
AttributeError: 'QTabWidget' object has no attribute 'setTabVisible'
根据文档(以及几个月前我的代码工作时),QTabWidget应该有一个名为setTabVisible()的函数:
https://doc.qt.io/qt-5/qtabwidget.html#setTabVisible
我在文档中看到这个函数是在Qt 5.15中引入的。
我正在使用Spyder 4.1.5,根据Spyder的“关于”窗口,我正在使用:
Python 3.8.5 64位| Qt 5.9.7 | PyQt5 5.9.2 | Windows 10
当我使用
pip freeze
不过,要检查我的PyQt5-Qt版本,它是5.15.3。
在检查了其他堆栈溢出问题并在Anaconda中进行了实验后,我了解到Spyder 4.1.5要求我使用PyQt版本<5.13,所以我猜Spyder有一些随机的旧版本的PyQt,它用它来替换我的,这样它就可以运行了(如果我错了,请纠正我)。
所以我的问题是:
我该怎么做才能使用这个函数(我几乎可以肯定有办法,因为去年夏天我的代码在Spyder中编译,我不知道有什么变化)?
如果没有一种方法可以使用setTabVisible()来隐藏/显示选项卡,我该如何解决这个问题?
下面是可重复的最小示例:
import sys
from PyQt5.QtWidgets import QWidget, QTabWidget, QApplication
app = QApplication(sys.argv)
tabs = QTabWidget()
tabs.addTab(QWidget(),"tab1")
tabs.addTab(QWidget(),"tab2")
tabs.setTabText(1, "test")
tabs.setTabVisible(0, 0)
#print(tabs.isTabVisible(0))
tabs.show()
app.exec_()
QTabWidget.isTabVisible()与setTabVisible(。我在上面的代码中包含了注释掉的内容,但如果我取消注释它,我会得到这个错误:
AttributeError: 'QTabWidget' object has no attribute 'isTabVisible'
我将QTabWidget.setTabText()作为一个运行良好的函数示例。我的问题似乎只局限于setTabVisible()和isTabVisibles()。
如果这只发生在我的电脑上,而它在你的电脑上运行良好,你能告诉我我可能做了什么导致了它,以及我如何修复它吗?
如果它对你也不起作用,你知道如何修复它吗?如果不知道,我该如何解决它?