Environment:
Python 3.7.7
Qt5
Qt Designer 5.11
Problem:
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.
Code:
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 "SCAN" 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 "Run" 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>
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>
What I tried:
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?
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()