【问题标题】:Why does PyQt's pyuic ignore default margins?为什么 PyQt 的 pyuic 会忽略默认边距?
【发布时间】:2017-02-16 00:55:15
【问题描述】:

在 Qt Designer 中,我可以看到 verticalLayout 有一个默认边距(13px),但 pyuic5 总是给我 self.verticalLayout.setContentsMargins(0, 0, 0, 0)。在uiparser.py:443 我发现了这条评论:

默认情况下,布局小部件应该没有边距。

并将边距设置为(0,0,0,0)。另一条评论还说:

一个普通的 QWidget 是一个布局小部件,除非它的父级是 Q主窗口。注意对应的uic测试多一点 复杂,因为它涉及 pyuic 不支持的功能。

这是什么意思?我正在使用 PyQt-5.7,这是我的 ui 文件:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>configDialog</class>
 <widget class="QDialog" name="configDialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>566</width>
    <height>552</height>
   </rect>
  </property>
  <layout class="QHBoxLayout" name="horizontalLayout">
   <item>
    <widget class="QTabWidget" name="tabWidget">
     <property name="currentIndex">
      <number>0</number>
     </property>
     <widget class="QWidget" name="general">
      <attribute name="title">
       <string>General</string>
      </attribute>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
        <widget class="QPushButton" name="pushButton">
         <property name="text">
          <string>PushButton</string>
         </property>
        </widget>
       </item>
      </layout>
     </widget>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>

【问题讨论】:

    标签: python qt layout pyqt qt-designer


    【解决方案1】:

    这里有一个PyQt mailing list thread,这似乎导致某些小部件的默认边距被强制为零。我不知道从那时起 C++ uic 工具的行为是否发生了变化,但在 Qt-5.7 中它的行为方式肯定与 pyuic 不同。

    这可以通过选择 View -> View code 在 Qt Designer 中进行检查。当边距全部设置为默认值时,C++ uic 工具根本不会生成setContentsMargins 行。如果设置了 one 边距,它会将其他值设置为负一。当边距未设置或设置为负一时,布局将使用当前样式指定的任何值。

    相比之下,pyuic 总是将任何未设置的边距显式重置为零,或设置为负一 - 这实际上覆盖了当前样式。很难看出这怎么可能是正确的行为——所以也许这是一种回归?

    【讨论】:

    • 所以我不能只从 pyuic 的输出中删除 *.setContentsMargins(0, 0, 0, 0)。不错的错误,为什么不能将它们设置为 -1
    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2011-08-30
    • 2020-10-25
    相关资源
    最近更新 更多