在下面的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()
Run Code Online (Sandbox Code Playgroud)
当我删除这一行时,tabBar.setTabButton(1, QTabBar.RightSide, menuButton)它的工作原理!
另外,如果我将此行移动到main功能:它也可以工作!我的意思是当我把它添加到main函数时:
tabBar = tabs.tabBar()
menuButton = QPushButton('')
menuButton.resize(0,0)
tabBar.setTabButton(1, QTabBar.RightSide, menuButton)
Run Code Online (Sandbox Code Playgroud)
我想要做的是在某些标签上隐藏关闭按钮.
有没有解决方法来执行此操作?
最后,我找到了让它成功的答案!
您必须将该按钮声明为该类的成员.
self.menuButton = QPushButton('')
Run Code Online (Sandbox Code Playgroud)
代替
menuButton = QPushButton('')
Run Code Online (Sandbox Code Playgroud)
我希望有人会发现这个解决方案很有用.