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>