QTabWidget 有的tab有关闭按钮,有的tab没有关闭按钮
QTabWidget some tabs have a close button, and some tabs do not have a close button
我正在创建一个 QTabWidget,并将 True 设置为其 setTabsClosable 方法,以便每个选项卡都有一个关闭按钮。我要的效果是第一个标签没有关闭按钮,第二个按钮有关闭按钮。应该怎么设置?
from PyQt4.QtGui import QTabWidget, QLabel, QHBoxLayout
import sys
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def create_tab(self):
self.tab = QTabWidget()
self.tab.tabCloseRequested.connect(self.delete)
self.tab.setTabsClosable(True)
self.tab.addTab(QLabel('a'), 'a')
self.tab.addTab(QLabel('b'), 'b')
def initUI(self):
self.create_tab()
h = QtGui.QHBoxLayout()
self.setLayout(h)
h.addWidget(self.tab)
self.setGeometry(100, 100, 500, 500)
self.show()
def delete(self, index):
self.tab.removeTab(index)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
一种可能的解决方案是在设置选项卡后删除按钮:
def create_tab(self):
self.tab = QtGui.QTabWidget()
self.tab.tabCloseRequested.connect(self.delete)
self.tab.setTabsClosable(True)
self.tab.addTab(QtGui.QLabel("a"), "a")
self.tab.addTab(QtGui.QLabel("b"), "b")
default_side = self.tab.style().styleHint(
QtGui.QStyle.SH_TabBar_CloseButtonPosition, None, self.tab.tabBar()
)
for i in (0,): # indexes of the buttons to remove
<b>self.tab.tabBar().setTabButton(i, default_side, None)</b>
我正在创建一个 QTabWidget,并将 True 设置为其 setTabsClosable 方法,以便每个选项卡都有一个关闭按钮。我要的效果是第一个标签没有关闭按钮,第二个按钮有关闭按钮。应该怎么设置?
from PyQt4.QtGui import QTabWidget, QLabel, QHBoxLayout
import sys
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def create_tab(self):
self.tab = QTabWidget()
self.tab.tabCloseRequested.connect(self.delete)
self.tab.setTabsClosable(True)
self.tab.addTab(QLabel('a'), 'a')
self.tab.addTab(QLabel('b'), 'b')
def initUI(self):
self.create_tab()
h = QtGui.QHBoxLayout()
self.setLayout(h)
h.addWidget(self.tab)
self.setGeometry(100, 100, 500, 500)
self.show()
def delete(self, index):
self.tab.removeTab(index)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
一种可能的解决方案是在设置选项卡后删除按钮:
def create_tab(self):
self.tab = QtGui.QTabWidget()
self.tab.tabCloseRequested.connect(self.delete)
self.tab.setTabsClosable(True)
self.tab.addTab(QtGui.QLabel("a"), "a")
self.tab.addTab(QtGui.QLabel("b"), "b")
default_side = self.tab.style().styleHint(
QtGui.QStyle.SH_TabBar_CloseButtonPosition, None, self.tab.tabBar()
)
for i in (0,): # indexes of the buttons to remove
<b>self.tab.tabBar().setTabButton(i, default_side, None)</b>