在以下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
函数:它也可以工作!我的意思是当我把它添加到main函数时:
tabBar = tabs.tabBar()
menuButton = QPushButton('')
menuButton.resize(0,0)
tabBar.setTabButton(1, QTabBar.RightSide, menuButton)
我想要做的是在某些标签上隐藏关闭按钮。
是否有解决方法可以执行此操作?
答案 0 :(得分:5)
最后,我找到了让它起作用的答案!
您必须将该按钮声明为该类的成员。
self.menuButton = QPushButton('')
而不是
menuButton = QPushButton('')
我希望有人会发现这个解决方案很有用。