Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 图形显示在Qt设计器中,但不在PyQt5 GUI中_Python_Pyqt_Pyqt5_Qt Designer - Fatal编程技术网

Python 图形显示在Qt设计器中,但不在PyQt5 GUI中

Python 图形显示在Qt设计器中,但不在PyQt5 GUI中,python,pyqt,pyqt5,qt-designer,Python,Pyqt,Pyqt5,Qt Designer,我想在Qt设计器创建的main window.ui文件中显示QLabel中的SVG图形 SVG图形显示在Qt Designer中,但不使用下面的Python 3代码 代码有什么问题 main.py import sys from pathlib import Path from PyQt5.QtWidgets import QApplication, QDesktopWidget, QMainWindow from PyQt5 import uic MainWindow_form = (Pa

我想在Qt设计器创建的
main window.ui
文件中显示
QLabel
中的SVG图形

SVG图形显示在Qt Designer中,但不使用下面的Python 3代码

代码有什么问题

main.py

import sys
from pathlib import Path
from PyQt5.QtWidgets import QApplication, QDesktopWidget, QMainWindow
from PyQt5 import uic


MainWindow_form = (Path(__file__).parent / "ui/mainwindow.ui").resolve()
MainWindow_Interface, _ = uic.loadUiType(MainWindow_form)


class MainWindow(QMainWindow, MainWindow_Interface, QDesktopWidget):
    def __init__(self, parent=None):
        super().__init__()
        self.setupUi(self)


def main():
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()
ui/mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>516</width>
    <height>606</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <property name="locale">
   <locale language="English" country="UnitedKingdom"/>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QGridLayout" name="gridLayout_2">
    <item row="0" column="0">
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QLabel" name="label_graphics">
        <property name="text">
         <string/>
        </property>
        <property name="pixmap">
         <pixmap>../svg/creative.svg</pixmap>
        </property>
        <property name="scaledContents">
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_attribution">
        <property name="text">
         <string>Icon made by Eucalyp from www.flaticon.com</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>516</width>
     <height>24</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
  <widget class="QToolBar" name="toolBar">
   <property name="windowTitle">
    <string>toolBar</string>
   </property>
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

主窗口
0
0
516
606
主窗口
../svg/creative.svg
真的
Eucalyp从www.flaticon.com制作的图标
0
0
516
24
工具栏
顶部工具栏区域
假的
svg/creative.svg

<svg height="496pt" viewBox="0 0 496 496" width="496pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="248" x2="248" y1="496" y2="0"><stop offset="0" stop-color="#9f2fff"/><stop offset="1" stop-color="#0bb1d3"/></linearGradient><path d="m224 48h-192v-16h192zm-16 32h16v-16h-16zm-16-16h-160v16h160zm32 32h-192v16h192zm-201.480469 316.175781-22.519531-6.039062v-60.273438l22.519531-6.039062c.894531-2.382813 1.886719-4.761719 2.992188-7.136719l-11.671875-20.230469 42.609375-42.625 20.230469 11.671875c2.367187-1.097656 4.753906-2.097656 7.136718-2.992187l4.183594-15.574219v-109.546875l-10.960938-9.390625h-53.039062c-13.230469 0-24-10.769531-24-24v-96c0-13.230469 10.769531-24 24-24h208c13.230469 0 24 10.769531 24 24v40h150.671875l33.328125-55.550781 56 93.335937v354.214844c0 22.054688-17.945312 40-40 40h-32c-22.054688 0-40-17.945312-40-40v-8h-166.296875l-34.152344 34.167969-20.230469-11.671875c-2.367187 1.097656-4.753906 2.097656-7.136718 2.992187l-6.039063 22.511719h-60.28125l-6.039062-22.519531c-2.382813-.894531-4.769531-1.886719-7.136719-2.992188l-20.230469 11.671875-42.617187-42.617187 11.671875-20.230469c-1.097657-2.367188-2.085938-4.753906-2.992188-7.136719zm377.480469-28.175781h32v-32h16v32h32v-272h-32v224h-16v-224h-32zm0 16v16h80v-16zm-16-128h-112v128h112zm96 184v-24h-80v24c0 13.230469 10.769531 24 24 24h32c13.230469 0 24-10.769531 24-24zm-40-416.449219-33.871094 56.449219h67.742188zm-357.039062 88.449219 45.039062 38.609375v-38.609375h104c4.414062 0 8-3.59375 8-8v-96c0-4.40625-3.585938-8-8-8h-208c-4.414062 0-8 3.59375-8 8v96c0 4.40625 3.585938 8 8 8zm21.039062 39.113281v88.886719h46.144531l6.039063 22.519531c2.382812.894531 4.769531 1.886719 7.136718 2.992188l20.230469-11.671875 42.609375 42.625-11.671875 20.230468c1.105469 2.367188 2.097657 4.753907 2.992188 7.136719l22.519531 6.03125v60.273438l-22.519531 6.039062c-.894531 2.382813-1.886719 4.761719-2.992188 7.136719l7.320313 12.6875h162.191406v-16h-128v-160h128v-154.214844l13.070312-21.785156h-141.070312v40c0 13.230469-10.769531 24-24 24h-88v57.390625zm-88 226.75 18.945312 5.082031 1.34375 4.132813c1.390626 4.289063 3.199219 8.632813 5.398438 12.914063l1.976562 3.871093-9.832031 17.046875 25.265625 25.265625 17.046875-9.839843 3.871094 1.984374c4.273437 2.183594 8.617187 4 12.90625 5.390626l4.132813 1.335937 5.089843 18.953125h35.71875l5.089844-18.953125 4.136719-1.335937c4.285156-1.390626 8.628906-3.207032 12.902344-5.390626l3.871093-1.984374 17.046875 9.839843 25.265625-25.265625-9.832031-17.046875 1.976562-3.871093c2.191407-4.289063 4.007813-8.632813 5.398438-12.914063l1.34375-4.132813 18.9375-5.082031v-35.726562l-18.945312-5.082031-1.34375-4.132813c-1.390626-4.289063-3.199219-8.632813-5.398438-12.914063l-1.976562-3.871093 9.832031-17.046875-25.265625-25.265625-17.046875 9.839843-3.871094-1.984374c-4.273437-2.183594-8.617187-4-12.90625-5.390626l-4.132813-1.335937-5.089843-18.953125h-35.71875l-5.089844 18.953125-4.136719 1.335937c-4.285156 1.390626-8.628906 3.207032-12.902344 5.390626l-3.871093 1.984374-17.046875-9.839843-25.265625 25.265625 9.832031 17.046875-1.976562 3.871093c-2.191407 4.289063-4.007813 8.632813-5.398438 12.914063l-1.34375 4.132813-18.9375 5.082031zm32-17.863281c0-39.695312 32.296875-72 72-72s72 32.304688 72 72-32.296875 72-72 72-72-32.304688-72-72zm16 0c0 30.878906 25.128906 56 56 56s56-25.121094 56-56-25.128906-56-56-56-56 25.121094-56 56zm16 0c0-22.054688 17.945312-40 40-40s40 17.945312 40 40-17.945312 40-40 40-40-17.945312-40-40zm16 0c0 13.230469 10.769531 24 24 24s24-10.769531 24-24-10.769531-24-24-24-24 10.769531-24 24zm272-280h-96v16h96zm0 32h-96v16h96zm0 32h-208v16h208zm0 32h-208v16h208zm0 48v-16h-248v16zm0 0" fill="url(#a)"/></svg>

创建一个类,将其用作main.py文件路径的基础,而Qt Designer将其用作.ui路径的基础,从而导致目录之间出现问题。因此,有以下解决方案:

  • 修改.ui中.svg的路径,考虑到文件的基础是.py,为此它将更改为:
svg/creative.svg
  • 使用以下代码设置svg:
self.setupUi(self)
svg_path=(路径(_文件__).parent/“svg/creative.svg”).resolve()
self.label\u graphics.setPixmap(QtGui.QPixmap(str(svg\u路径)))
self.setupUi(self)
svg_path = (Path(__file__).parent / "svg/creative.svg").resolve()
self.label_graphics.setPixmap(QtGui.QPixmap(str(svg_path)))