0
각 탭의 테이블 위젯을 포함하는 탭 위젯이 있으며 옵션이있는 도킹 위젯도 있습니다. 옵션 중 하나는 열 개수이며, 열 개수 스핀 상자 값이 변경되는 즉시 변경하려고합니다. 그러나 다른 탭으로 전환 할 때 스핀 상자 값 (및 다른 모든 옵션)을 재설정하여 특정 탭의 설정으로 전환하고 싶습니다.각 탭 위젯에 대한 PyQt 옵션
제 질문은 이것을 최선으로 수행하고 도킹 위젯으로 옵션을 유지하는 것입니다. 모든 탭 위젯에 대한 변수로 모든 설정을 저장 한 다음 새 탭이 열릴 때마다 값을 변경할 수 있지만 더 나은 솔루션이있을 수 있습니다.
from PyQt5 import QtWidgets, QtCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent = None):
super(MainWindow, self).__init__()
self.__setup__()
def __setup__(self):
self.resize(400, 400)
tabWidget = TabWidget(self)
self.setCentralWidget(tabWidget)
options = Options(self)
optionsDock = QtWidgets.QDockWidget()
optionsDock.setWidget(options)
optionsDock.setWindowTitle("Options")
self.addDockWidget(QtCore.Qt.TopDockWidgetArea, optionsDock)
options.spinBox_columns.valueChanged.connect(lambda: tabWidget.tabWidget.currentWidget().
setColumnCount(options.spinBox_columns.value()))
class Options(QtWidgets.QWidget):
def __init__(self, parent):
super(Options, self).__init__(parent)
self.__setup__()
def __setup__(self):
self.spinBox_columns = QtWidgets.QSpinBox()
self.spinBox_columns.setValue(1)
self.spinBox_columns.setMinimum(1)
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.spinBox_columns)
self.setLayout(layout)
class TabWidget(QtWidgets.QWidget):
def __init__(self, parent):
super(TabWidget, self).__init__(parent)
self.__setup__()
def __setup__(self):
self.tabWidget = QtWidgets.QTabWidget()
for i in range(3):
widget = QtWidgets.QTableWidget()
widget.setColumnCount(1)
widget.setRowCount(3)
self.tabWidget.addTab(widget, "Column " + str(i))
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.tabWidget)
self.setLayout(layout)
def main():
import sys
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()