1

在以下 Python 代码段中,应用程序在我运行时崩溃。我在 Mac OS X、Windows 和 Ubuntu 上对其进行了测试:

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class TabbedWindow(QTabWidget):

    def __init__(self):
        super(TabbedWindow, self).__init__()
        self.setWindowTitle(u"Tabs Test")
        self.resize(800, 600)

        self.addTab(QTextEdit(), "Tab 1")
        self.addTab(QCalendarWidget(), "Tab 2")

        self.setTabsClosable(True)

        tabBar = self.tabBar()
        menuButton = QPushButton('')
        menuButton.resize(0,0)
        tabBar.setTabButton(1, QTabBar.RightSide, menuButton)


def main():
    app = QApplication(sys.argv)
    window = QMainWindow()
    tabs = TabbedWindow()
    window.setCentralWidget(tabs)
    window.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

当我删除此行时tabBar.setTabButton(1, QTabBar.RightSide, menuButton),它起作用了!

此外,如果我将这条线移动到main功能:它也可以!我的意思是当我将它添加到主要功能时:

tabBar = tabs.tabBar()
menuButton = QPushButton('')
menuButton.resize(0,0)
tabBar.setTabButton(1, QTabBar.RightSide, menuButton)

我想要做的是在某些选项卡上隐藏关闭按钮。

是否有任何解决方法来执行此操作?

4

1 回答 1

6

最后,我找到了让它工作的答案!

您必须将按钮声明为该类的成员。

self.menuButton = QPushButton('')

代替

menuButton = QPushButton('')

我希望有人会发现这个解决方案很有用。

于 2013-04-08T08:50:14.897 回答