【发布时间】:2019-12-27 12:24:59
【问题描述】:
考虑这个例子。我想制作一个程序,其中主窗口分为三个可以调整大小的部分。中间我想有两个垂直放置的小部件,底部的一个是QTabWidget,用户可以在其中更改某些属性。目前我只有一个选项卡和一个属性,还可以有更多。
我看到了类似的问题(here 和 here),但我似乎无法理解与大小和布局相关的所有不同部分是如何协同工作的 + 它们是 C++ 问题。
请帮助我将 QTabWidget 调整为最小必要大小以显示当前选项卡的内容。 作为旁注,您可以向我指出一些适用于 GUI 和 PyQt5 初学者的易于理解的文档。
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QLineEdit, QLabel, QSplitter, QWidget, QListWidget, QApplication, QTabWidget, QGroupBox, \
QFormLayout, QSizePolicy, QLayout
from PyQt5.QtCore import Qt
class Example(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.init_tabs()
self.main_splitter = QSplitter(Qt.Horizontal)
some_left_widget = QWidget()
some_right_widget = QWidget()
mid = QSplitter(Qt.Vertical)
mid.addWidget(QListWidget())
mid.addWidget(self.tabs)
self.main_splitter.addWidget(some_left_widget)
self.main_splitter.addWidget(mid)
self.main_splitter.addWidget(some_right_widget)
self.setCentralWidget(self.main_splitter)
self.showMaximized()
def init_tabs(self):
self.properties_dict = {}
self.properties_dict['Text'] = QLineEdit()
self.tabs = QTabWidget()
self.properties_groupbox = QGroupBox("Overview")
layout = QFormLayout()
for k, v in self.properties_dict.items():
layout.addRow(QLabel(k + ':'), v)
self.properties_groupbox.setLayout(layout)
self.tabs.addTab(self.properties_groupbox, 'Properties')
# I have no idea how these work
self.properties_groupbox.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
self.properties_groupbox.resize(self.properties_groupbox.minimumSizeHint())
self.properties_groupbox.adjustSize()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
左边是现在,右边是想要的
【问题讨论】:
标签: python pyqt5 qtabwidget