本文介绍了为什么我执行 Python QT5 代码时没有显示图标和图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

环境:

Python 3.7.7

Python 3.7.7

Qt5

Qt 设计器 5.11

Qt Designer 5.11

问题:

我使用 Qt Designer 设计了一个 GUI,并在按钮中的标签和图标的背景中添加了一些图像.我可以从软件 Qt 设计器中正确地看到图像和图标.但是当我执行我的 python 脚本来加载我的 UI 时,我看不到图像了.

I designed a GUI with Qt Designer and I added some images in the background of labels and icons in buttons.I can see the images and icons properly from the software Qt designer. But when I execute my python script to load my UI, I don't see the images anymore.

代码:

我在根文件夹中有我的主要 python 脚本,在文件夹ui"中有 ui、qrc 和图像文件:

I have my main python script on root folder and the ui, qrc and image files in the folder "ui":

main.py
ui/config.qrc
ui/doc.qrc
ui/document.png
ui/gear.png
ui/logo.qrc
ui/logo_MyUI_300.jpg
ui/MyUI.ui
ui/play-button.png
ui/play.png
ui/question.png
ui/quit.png
ui/quit.qrc
ui/report.qrc
ui/run.qrc
ui/save.png
ui/save.qrc
ui/scan.qrc
ui/search.png
ui/seo-report.png
ui/support.qrc
ui/telegram.png
ui/telegram.qrc
ui/watch_videos.qrc

main.py:

from PyQt5 import QtWidgets, uic

gui = QtWidgets.QApplication([])
ui=uic.loadUi('ui/MyUI.ui')

ui.show()
gui.exec()

MyUI.ui:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <author>MyUI.co</author>
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>580</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MyUI.co</string>
  </property>
  <property name="windowIcon">
   <iconset>
    <normalon>:/logo/logo_MyUI_300.jpg</normalon>
   </iconset>
  </property>
  <property name="styleSheet">
   <string notr="true">background-color: rgb(255, 255, 255);</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QLineEdit" name="lineEdit_Email">
    <property name="geometry">
     <rect>
      <x>126</x>
      <y>190</y>
      <width>221</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="placeholderText">
     <string>i.e: johndoe@gmail.com</string>
    </property>
   </widget>
   <widget class="QLineEdit" name="lineEdit_License">
    <property name="geometry">
     <rect>
      <x>126</x>
      <y>220</y>
      <width>221</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="placeholderText">
     <string>i.e: gold89DE-B4JI-HQ3E-D8UT</string>
    </property>
   </widget>
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>76</x>
      <y>190</y>
      <width>41</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Email</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>10</y>
      <width>75</width>
      <height>75</height>
     </rect>
    </property>
    <property name="autoFillBackground">
     <bool>true</bool>
    </property>
    <property name="styleSheet">
     <string notr="true">background-image: url(:/logo/logo_MyUI_300.jpg);</string>
    </property>
    <property name="text">
     <string/>
    </property>
    <property name="textFormat">
     <enum>Qt::RichText</enum>
    </property>
    <property name="pixmap">
     <pixmap resource="logo.qrc">:/logo/logo_MyUI_300.jpg</pixmap>
    </property>
    <property name="openExternalLinks">
     <bool>false</bool>
    </property>
   </widget>
   <widget class="QLabel" name="label_3">
    <property name="geometry">
     <rect>
      <x>36</x>
      <y>220</y>
      <width>81</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>License Key</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_1">
    <property name="geometry">
     <rect>
      <x>36</x>
      <y>140</y>
      <width>31</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>20</pointsize>
     </font>
    </property>
    <property name="text">
     <string>1.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_1_Title">
    <property name="geometry">
     <rect>
      <x>66</x>
      <y>146</y>
      <width>231</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>16</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Activate your MyUI</string>
    </property>
   </widget>
   <widget class="QPushButton" name="button_SaveLicense">
    <property name="geometry">
     <rect>
      <x>256</x>
      <y>260</y>
      <width>91</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>16</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(199, 199 199);</string>
    </property>
    <property name="text">
     <string>Save</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/save/save.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QLabel" name="label_5">
    <property name="geometry">
     <rect>
      <x>36</x>
      <y>304</y>
      <width>31</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>20</pointsize>
     </font>
    </property>
    <property name="text">
     <string>2.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_2_Title">
    <property name="geometry">
     <rect>
      <x>66</x>
      <y>310</y>
      <width>331</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>16</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Required Softwares are Installed?</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_8">
    <property name="geometry">
     <rect>
      <x>86</x>
      <y>350</y>
      <width>101</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Java Runtime:</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_9">
    <property name="geometry">
     <rect>
      <x>186</x>
      <y>350</y>
      <width>41</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>No</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_10">
    <property name="geometry">
     <rect>
      <x>186</x>
      <y>370</y>
      <width>41</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>No</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_11">
    <property name="geometry">
     <rect>
      <x>126</x>
      <y>370</y>
      <width>61</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>NodeJS:</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_12">
    <property name="geometry">
     <rect>
      <x>186</x>
      <y>390</y>
      <width>41</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>No</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_13">
    <property name="geometry">
     <rect>
      <x>90</x>
      <y>390</y>
      <width>91</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>SDKManager:</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_14">
    <property name="geometry">
     <rect>
      <x>186</x>
      <y>410</y>
      <width>41</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>No</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_15">
    <property name="geometry">
     <rect>
      <x>106</x>
      <y>410</y>
      <width>81</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Build-Tools:</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_16">
    <property name="geometry">
     <rect>
      <x>186</x>
      <y>430</y>
      <width>41</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>No</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_17">
    <property name="geometry">
     <rect>
      <x>126</x>
      <y>430</y>
      <width>61</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Appium:</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_18">
    <property name="geometry">
     <rect>
      <x>186</x>
      <y>450</y>
      <width>41</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>No</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_19">
    <property name="geometry">
     <rect>
      <x>110</x>
      <y>450</y>
      <width>71</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>11</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Tesseract:</string>
    </property>
   </widget>
   <widget class="QPushButton" name="button_Run">
    <property name="geometry">
     <rect>
      <x>100</x>
      <y>20</y>
      <width>71</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(85, 255, 127);</string>
    </property>
    <property name="text">
     <string>Run</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/run/play-button.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QPushButton" name="button_Quit">
    <property name="geometry">
     <rect>
      <x>180</x>
      <y>20</y>
      <width>71</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(255, 112, 93);</string>
    </property>
    <property name="text">
     <string>Quit</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/quit/quit.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QPushButton" name="button_Report">
    <property name="geometry">
     <rect>
      <x>280</x>
      <y>20</y>
      <width>101</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(199, 199, 199);</string>
    </property>
    <property name="text">
     <string>See Report</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/report/seo-report.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QPushButton" name="button_Doc">
    <property name="geometry">
     <rect>
      <x>390</x>
      <y>20</y>
      <width>121</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(199, 199, 199);</string>
    </property>
    <property name="text">
     <string>Read the Doc</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/doc/document.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QPushButton" name="button_Support">
    <property name="geometry">
     <rect>
      <x>650</x>
      <y>20</y>
      <width>131</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(199, 199, 199);</string>
    </property>
    <property name="text">
     <string>Contact Support</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/support/question.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QLabel" name="label_4">
    <property name="geometry">
     <rect>
      <x>430</x>
      <y>140</y>
      <width>31</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>20</pointsize>
     </font>
    </property>
    <property name="text">
     <string>3.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_3_Title">
    <property name="geometry">
     <rect>
      <x>460</x>
      <y>146</y>
      <width>331</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>16</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Connect your Smartphone(s)</string>
    </property>
   </widget>
   <widget class="QPlainTextEdit" name="plainTextEdit_Smartphones">
    <property name="geometry">
     <rect>
      <x>440</x>
      <y>175</y>
      <width>311</width>
      <height>171</height>
     </rect>
    </property>
    <property name="plainText">
     <string>No smartphones were detected... Please verify you enable USB debug mode and you plug correctly your smartphone(s) to your computer through USB, and press the &quot;SCAN&quot; button.</string>
    </property>
   </widget>
   <widget class="QPushButton" name="button_ScanSmartphones">
    <property name="geometry">
     <rect>
      <x>660</x>
      <y>355</y>
      <width>91</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>16</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(199, 199 199);</string>
    </property>
    <property name="text">
     <string>Scan</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/scan/search.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QPushButton" name="button_Videos">
    <property name="geometry">
     <rect>
      <x>520</x>
      <y>20</y>
      <width>121</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(199, 199, 199);</string>
    </property>
    <property name="text">
     <string>Watch videos</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/whatch_videos/play.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QLabel" name="label_6">
    <property name="geometry">
     <rect>
      <x>430</x>
      <y>390</y>
      <width>31</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>20</pointsize>
     </font>
    </property>
    <property name="text">
     <string>4.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_4_Title">
    <property name="geometry">
     <rect>
      <x>460</x>
      <y>396</y>
      <width>331</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>16</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Configure the tasks</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_info1">
    <property name="geometry">
     <rect>
      <x>40</x>
      <y>265</y>
      <width>201</width>
      <height>20</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Your MyUI is activated.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_info2">
    <property name="geometry">
     <rect>
      <x>40</x>
      <y>480</y>
      <width>281</width>
      <height>20</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="text">
     <string>The softwares are correctly installed.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_info3">
    <property name="geometry">
     <rect>
      <x>440</x>
      <y>360</y>
      <width>201</width>
      <height>20</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="text">
     <string>MyUI detected smartphones.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_info4">
    <property name="geometry">
     <rect>
      <x>440</x>
      <y>470</y>
      <width>201</width>
      <height>20</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>10</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Some tasks were configured.</string>
    </property>
   </widget>
   <widget class="QPushButton" name="button_Config">
    <property name="geometry">
     <rect>
      <x>440</x>
      <y>430</y>
      <width>311</width>
      <height>31</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>16</pointsize>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(199, 199 199);</string>
    </property>
    <property name="text">
     <string>Open configuration page</string>
    </property>
    <property name="icon">
     <iconset>
      <normalon>:/config/gear.png</normalon>
     </iconset>
    </property>
   </widget>
   <widget class="QLabel" name="label_HeaderMsg">
    <property name="geometry">
     <rect>
      <x>100</x>
      <y>90</y>
      <width>671</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Everything is correct. Start your MyUI by pressing the button &quot;Run&quot; in top left corner.</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_HeaderMsg_2">
    <property name="geometry">
     <rect>
      <x>220</x>
      <y>530</y>
      <width>421</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
     </font>
    </property>
    <property name="text">
     <string>Join our community on Telegram: myurl</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_7">
    <property name="geometry">
     <rect>
      <x>180</x>
      <y>525</y>
      <width>32</width>
      <height>32</height>
     </rect>
    </property>
    <property name="styleSheet">
     <string notr="true">background-image: url(:/telegram/telegram.png);</string>
    </property>
    <property name="text">
     <string/>
    </property>
   </widget>
   <widget class="Line" name="line">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>120</y>
      <width>781</width>
      <height>20</height>
     </rect>
    </property>
    <property name="orientation">
     <enum>Qt::Horizontal</enum>
    </property>
   </widget>
   <widget class="Line" name="line_2">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>500</y>
      <width>781</width>
      <height>20</height>
     </rect>
    </property>
    <property name="orientation">
     <enum>Qt::Horizontal</enum>
    </property>
   </widget>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources>
  <include location="logo.qrc"/>
  <include location="telegram.qrc"/>
  <include location="config.qrc"/>
  <include location="scan.qrc"/>
  <include location="save.qrc"/>
  <include location="watch_videos.qrc"/>
  <include location="support.qrc"/>
  <include location="doc.qrc"/>
  <include location="report.qrc"/>
  <include location="quit.qrc"/>
  <include location="run.qrc"/>
 </resources>
 <connections/>
</ui>

这是一个qrc文件(qrc文件的所有源代码都是一样的,只是图片文件名和前缀有变化).

Here is one qrc file (All the source codes of qrc files are all identical except the image filename and the prefix are changing).

logo.qrc:

<RCC>
  <qresource prefix="logo">
    <file>logo_MyUI_300.jpg</file>
  </qresource>
</RCC>

我的尝试:

我编辑了 MyUI.ui 文件中的图像路径以添加/ui/"文件夹路径,但它没有改变任何内容.我在 qrc 文件中做了同样的事情,没有任何变化.

I edited the images paths from MyUI.ui file in order to add the '/ui/' folder path, but it didn't change anything.I did the same in qrc files, and no changes.

您知道是什么阻止了图像的显示吗?

Do you have any idea please what is blocking the display of images?

推荐答案

uic.loadUi 函数和 Qt Designate 用来显示预览的方法不一样,uic.loadUi 生成的是 python 动态允许的类和属性,所以它需要您使用 pyrcc5 编译 rc 并将它们导入到您的脚本中,例如:

The uic.loadUi function is not the same method that Qt Designate uses to show the preview, uic.loadUi generates the classes and attributes dynamically allowed by python, so it needs you to compile the rc using pyrcc5 and import them into your script, for example:

pyrcc5 ui/logo.qrc -o logo_rc.py
from PyQt5 import QtWidgets, uic

import logo_rc

gui = QtWidgets.QApplication([])
ui=uic.loadUi('ui/MyUI.ui')

ui.show()
gui.exec()

这篇关于为什么我执行 Python QT5 代码时没有显示图标和图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-21 21:02