PyQt5:QTabWidget中的可关闭选项卡?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt5:QTabWidget中的可关闭选项卡?相关的知识,希望对你有一定的参考价值。
我一直在尝试在我的应用程序中实现QTabWidget部分,并希望能够在需要时关闭选项卡。
我读到我需要将setTabsCloseable标志设置为true并添加pyqtSignal,但是我不能这样做,因为QObject没有connect属性。相反,我在网上找到的大多数示例都提到了QtCore.QObject.Connect()
的使用这是一个最小的可复制示例:
from PyQt5 import QtWidgets, QtCore, QtWidgets
import sys, os
class Dialog_01(QtWidgets.QMainWindow):
def __init__(self):
super(Dialog_01,self).__init__()
mainWidget=QtWidgets.QWidget()
self.setCentralWidget(mainWidget)
mainLayout = QtWidgets.QVBoxLayout()
mainWidget.setLayout(mainLayout)
self.tabWidget = QtWidgets.QTabWidget()
self.tabWidget.setTabsClosable(True)
# QtCore.QObject.connect(self.chatView, QtCore.SIGNAL('tabCloseRequested(int)'), self.closeTab)
mainLayout.addWidget(self.tabWidget)
myBoxLayout = QtWidgets.QVBoxLayout()
self.tabWidget.setLayout(myBoxLayout)
self.tabWidget.addTab(QtWidgets.QWidget(),'Tab_01')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
dialog_1 = Dialog_01()
dialog_1.show()
dialog_1.resize(480,320)
sys.exit(app.exec_())
答案
您可以替代QtabWidget来合并自定义功能,并且还可以使所有内容保持良好包装。
我发现使用PyQt / Pyside覆盖类以适合某些程序是很普遍的,我强烈建议您养成习惯!
from PyQt5 import QtWidgets, QtCore, QtWidgets
import sys, os
class QCustomTabWidget (QtWidgets.QTabWidget):
def __init__ (self, parent = None):
super(QCustomTabWidget, self).__init__(parent)
self.setTabsClosable(True)
self.tabCloseRequested.connect(self.closeTab) # connect to method to close
for i in range(1, 10): # add tabs here
self.addTab(QtWidgets.QWidget(), 'Tab %d' % i)
def closeTab (self, currentIndex):
currentQWidget = self.widget(currentIndex)
currentQWidget.deleteLater()
self.removeTab(currentIndex)
class Dialog_01(QtWidgets.QMainWindow):
def __init__(self):
super(Dialog_01,self).__init__()
mainWidget=QtWidgets.QWidget()
self.setCentralWidget(mainWidget)
mainLayout = QtWidgets.QVBoxLayout()
mainWidget.setLayout(mainLayout)
self.tabWidget = QCustomTabWidget()
mainLayout.addWidget(self.tabWidget)
myBoxLayout = QtWidgets.QVBoxLayout()
self.tabWidget.setLayout(myBoxLayout)
self.tabWidget.addTab(QtWidgets.QTextEdit(),'Tab_01') #also add tabs here
self.tabWidget.addTab(QtWidgets.QTextEdit(),'Tab_02')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
dialog_1 = Dialog_01()
dialog_1.show()
dialog_1.resize(480,320)
sys.exit(app.exec_())
以上是关于PyQt5:QTabWidget中的可关闭选项卡?的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5 QTabWidget:如何在类和同一窗口中包含的选项卡之间切换?