Qtdesigner设计的UI与Qtdesigner翻译成Python cod时预览的UI不同

2024-04-19 07:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想问题是布局,我想用框架中的按钮做顶行,水平布局;下面是TabWidget,里面有一个表。TabWidget和框架使用垂直布局。预览在Qtdesigner中是正常的,但是在py文件转换后会出现错误。 我举了一个小例子来说明这个问题。以下是UI文件代码:

<?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>1191</width>
    <height>941</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout_3">
   <item>
    <layout class="QVBoxLayout" name="verticalLayout_2">
     <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">
        <item>
         <widget class="QPushButton" name="pushButton">
          <property name="text">
           <string>PushButton</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QPushButton" name="pushButton_2">
          <property name="text">
           <string>PushButton</string>
          </property>
         </widget>
        </item>
        <item>
         <spacer name="horizontalSpacer">
          <property name="orientation">
           <enum>Qt::Horizontal</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
            <width>940</width>
            <height>20</height>
           </size>
          </property>
         </spacer>
        </item>
       </layout>
      </widget>
     </item>
     <item>
      <widget class="QTabWidget" name="tabWidget">
       <property name="tabPosition">
        <enum>QTabWidget::West</enum>
       </property>
       <property name="currentIndex">
        <number>0</number>
       </property>
       <widget class="QWidget" name="tab">
        <attribute name="title">
         <string>Tab 1</string>
        </attribute>
        <layout class="QVBoxLayout" name="verticalLayout">
         <item>
          <widget class="QTableWidget" name="tableWidget">
           <property name="rowCount">
            <number>5</number>
           </property>
           <row/>
           <row/>
           <row/>
           <row/>
           <row/>
           <column>
            <property name="text">
             <string>A</string>
            </property>
           </column>
           <column>
            <property name="text">
             <string>B</string>
            </property>
           </column>
           <column>
            <property name="text">
             <string>C</string>
            </property>
           </column>
           <column>
            <property name="text">
             <string>D</string>
            </property>
           </column>
          </widget>
         </item>
        </layout>
       </widget>
       <widget class="QWidget" name="tab_2">
        <attribute name="title">
         <string>Tab 2</string>
        </attribute>
       </widget>
      </widget>
     </item>
    </layout>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>

我要发一些照片,但我不确定我能不能,我从来没有在这里上传过照片…哦。 以下是Qtdesigner的预览: designer preview

以下是pycharm中运行的结果:

running screenshot

图示如下:

inspector preview


Tags: textnamenumberstringattributecolumnpropertyenum
1条回答
网友
1楼 · 发布于 2024-04-19 07:28:18

class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):更改为class MyApp(QtWidgets.QWidget, Ui_MainWindow):

import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic

qtCreatorFile = "test22.ui"   
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

#class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
class MyApp(QtWidgets.QWidget, Ui_MainWindow):
    def __init__(self):
        super().__init__()

        Ui_MainWindow.__init__(self)
        self.setupUi(self)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())

enter image description here

相关问题 更多 >