loadUi () загружает все, но не изображения в PyQt - PullRequest
0 голосов
/ 31 мая 2018

Я создал свой файл .ui в Qt Designers. Затем я использую loadUI (), чтобы загрузить его в свое приложение ниже.

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.uic import loadUi


class Life2Coding(QDialog):
    def __init__(self):
        super(Life2Coding, self).__init__()
        loadUi('new.ui', self)

app = QApplication(sys.argv)
widget=Life2Coding()
widget.show()
sys.exit(app.exec_())

Однако, когда я запускаю этот файл, изображения не отображаются, что странно, как в конструкторе Qt, когда я нажимаю на кнопку предварительного просмотра, на самом деле отображаются изображения.

Также на заметку, если это полезно, я использую файл xz.prc для префикса / пути, какQt designer пишет код, ссылающийся на изображения.

Пожалуйста, не могли бы вы предложить способы, с помощью которых я могу получить изображения из шоу new.ui в моем приложении?Также работают все виджеты, включая метки, это просто изображения, которые не отображаются при запуске.

Спасибо Карлу

.ui файл в его родном формате

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
  <rect>
<x>0</x>
<y>0</y>
<width>1343</width>
<height>965</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
  <rect>
 <x>730</x>
 <y>740</y>
 <width>521</width>
 <height>171</height>
</rect>
</property>
<property name="frameShape">
    <enum>QFrame::Box</enum>
   </property>
   <property name="text">
    <string/>
    </property>
   <property name="pixmap">
    <pixmap resource="xz.qrc">:/newPrefix/me.jpg</pixmap>
   </property>
  </widget>
  <widget class="QLabel" name="label_2">
   <property name="geometry">
    <rect>
     <x>60</x>
     <y>530</y>
     <width>651</width>
     <height>271</height>
     </rect>
   </property>
   <property name="text">
    <string/>
   </property>
   <property name="pixmap">
    <pixmap resource="xz.qrc">:/newPrefix/logo.png</pixmap>
   </property>
 </widget>
  <widget class="QLabel" name="label_3">
   <property name="geometry">
    <rect>
     <x>930</x>
     <y>70</y>
     <width>331</width>
     <height>301</height>
    </rect>
   </property>
   <property name="styleSheet">
    <string notr="true">image: url(:/newPrefix/logo.png);</string>
   </property>
   <property name="text">
    <string>TextLabel</string>
   </property>
  </widget>
  <widget class="QLabel" name="label_4">
   <property name="geometry">
    <rect>
     <x>280</x>
     <y>180</y>
     <width>68</width>
    <height>19</height>
    </rect>
   </property>
   <property name="text">
    <string>TextLabel</string>
   </property>
  </widget>
 </widget>
 <resources>
  <include location="xz.qrc"/>
 </resources>
 <connections/>
</ui>

xz.prc

<RCC>
  <qresource prefix="newPrefix">
    <file>logo.png</file>
    <file>me.jpg</file>
  </qresource>
</RCC>

xz_rc.py Это после того, как он был преобразован из xz.prc

from PyQt5 import QtCore

qt_resource_data = b

 qt_version = QtCore.qVersion().split('.')
    if qt_version < ['5', '8', '0']:
        rcc_version = 1
        qt_resource_struct = qt_resource_struct_v1
    else:
        rcc_version = 2
        qt_resource_struct = qt_resource_struct_v2

    def qInitResources():
        QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)

    def qCleanupResources():
        QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)

    qInitResources()

1 Ответ

0 голосов
/ 31 мая 2018

Файл .qrc, возможно, используется конструктором Qt для подключения к изображениям, однако, когда я загружаю файл .ui в свое приложение .py, возникают проблемы с использованием файла .qrc, поэтому вместо этого мне нужно создать версию .py.qrc.

Перейдите в каталог, в котором находится .qrc, используя командную строку, и введите эту команду.Обратите внимание, что xz - это то, что я назвал, ваше можно назвать еще чем-то.

pyrcc5 xz.qrc -o xz_rc.py

Затем импортируйте это в ваше приложение .py, и не нужно добавлять .py в конце, так как мы импортируем это как модуль.

import xz.rc

Теперь ваше приложение .py должно отображать изображения благодаря доступу к формату, который он теперь может понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...