使用Python和PyQt5我编程遵循GUI。
现在我想自定义程序,以便能够通过单击右边的表格边框(浅蓝线)并移动鼠标(请参见图中的箭头)来更改左边的宽度。在改变表格宽度的同时,右侧也应该改变。 我希望我的描述很清楚。在运行时调整QTableWidget/QHBoxLayout的大小
GUI输出:代码为GUI布局
部分:
# table for writeOutput
self.tableWidget = QTableWidget(0, 2)
self.tableWidget.verticalHeader().setVisible(False);
self.tableWidget.setMinimumHeight(170)
self.tableWidget.setMinimumWidth(600)
# generate chart
self.main_widget = QWidget(self)
self.chart = QtBarChart(self.main_widget)
# Layout for input elements
inputLayout = QHBoxLayout()
inputLayout.addWidget(self.typeCBox)
inputLayout.addWidget(self.yearSpinBox)
inputLayout.addWidget(self.button)
inputLayout.addStretch(1)
# right inner layout for output elements e.g chart
innerOutLayout = QVBoxLayout()
innerOutLayout.addWidget(self.chart)
innerOutLayout.addWidget(self.outEdit)
# outer layout for output elements e.g. table
outLayout = QHBoxLayout()
outLayout.addWidget(self.tableWidget)
outLayout.addLayout(innerOutLayout)
# top layout who groups all elements together
topLevelLayout = QVBoxLayout()
topLevelLayout.addLayout(inputLayout)
topLevelLayout.addLayout(outLayout)
我需要什么样的功能或更改代码来实现我的目标?
- > QSplitter是一个很好的提示
当我尝试实现QSplitter并更改我的程序,如下所示,我得到一个错误。
# Layout for input elements
inputLayout = QHBoxLayout()
inputLayout.addWidget(self.typeCBox)
inputLayout.addWidget(self.yearSpinBox)
inputLayout.addWidget(self.button)
inputLayout.addStretch(1)
# right inner layout for output elements e.g chart
innerOutLayout = QVBoxLayout()
innerOutLayout.addWidget(self.chart)
innerOutLayout.addWidget(self.outEdit)
# create Splitter between Table and innerOutLayout() --> (Chart and outEdit)
tableSplitter = QSplitter(Qt.Horizontal)
tableSplitter.addWidget(self.tableWidget)
tableSplitter.addLayout(innerOutWidget)
# outer layout for output elements e.g. table
outLayout = QHBoxLayout()
outLayout.addWidget(self.tableWidget)
outLayout.addWidget(tableSplitter)
# top layout who groups all elements together
topLevelLayout = QVBoxLayout()
topLevelLayout.addLayout(inputLayout)
topLevelLayout.addLayout(outLayout)
当我运行程序我得到以下错误:
tableSplitter.addLayout(innerOutWidget)
AttributeError: 'QSplitter' object has no attribute 'addLayout'
我怎样才能解决这个错误,以及如何改变代码工作。
你可以更好的解释,请 – eyllanesc
的可能的复制[制取2 QVBoxLayout QHBoxLayout,负责内可调整大小(http://stackoverflow.com/questions/41840760/make-two-qvboxlayout-resizable -within-a-qhboxlayout) – rbaleksandar
@rbaleksander QSplitter听起来不错,但我不知道它是如何工作的。我会发布我的结果。 – mepi0011