代码之家  ›  专栏  ›  技术社区  ›  WeCanDoItGuys

Spyder不允许我使用PyQt-5.15,有没有办法使用PyQt-5.15函数?

  •  0
  • WeCanDoItGuys  · 技术社区  · 5 年前

    我正在用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()。

    如果这只发生在我的电脑上,而它在你的电脑上运行良好,你能告诉我我可能做了什么导致了它,以及我如何修复它吗?

    如果它对你也不起作用,你知道如何修复它吗?如果不知道,我该如何解决它?

    0 回复  |  直到 5 年前