Pyqt5 多种尺寸的tableWidget
Pyqt5 multiple sizes tableWidget
我在 qtDesigner 中创建了一个 window,其中我有两个框架,在 frame1 中有两个 tableWidget,在 frame2 中我有一个 tableWidget。所有 tableWidget 的高度都相同,例如 50-50%。我想将 frame1 或 tableWidget1 &2 的高度设置为 30%,而 frame2 将为 70%,如图所示。可能很容易做到或肯定有功能,但我无法找到并做到这一点。
建议您提供 MRE,例如在您的情况下,如果您提供 .ui 会很棒,因为您还没有提供,那么在我的回答中我将不得不创建它,但它不一定与您的样本相同。
由于 QFrame 是 QTableWidget 的容器,因此它们定义了它们的高度,并且它们的大小可以通过 QVBoxLayout 设置它们是比例拉伸因子:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout" stretch="3,7">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item>
<widget class="QTableWidget" name="tableWidget_2"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTableWidget" name="tableWidget_3"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
我在 qtDesigner 中创建了一个 window,其中我有两个框架,在 frame1 中有两个 tableWidget,在 frame2 中我有一个 tableWidget。所有 tableWidget 的高度都相同,例如 50-50%。我想将 frame1 或 tableWidget1 &2 的高度设置为 30%,而 frame2 将为 70%,如图所示。可能很容易做到或肯定有功能,但我无法找到并做到这一点。
建议您提供 MRE,例如在您的情况下,如果您提供 .ui 会很棒,因为您还没有提供,那么在我的回答中我将不得不创建它,但它不一定与您的样本相同。
由于 QFrame 是 QTableWidget 的容器,因此它们定义了它们的高度,并且它们的大小可以通过 QVBoxLayout 设置它们是比例拉伸因子:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout" stretch="3,7">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item>
<widget class="QTableWidget" name="tableWidget_2"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTableWidget" name="tableWidget_3"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>