Не запускается функция загрузки изображений в программе на PyQt5

Рейтинг: 1Ответов: 1Опубликовано: 08.01.2023

Я написал программу для сбора ответов на ОГЭ, после того как вы запустите файл OrbitTeacherFormL.py вы должны будите ввести обязательные данные они идут до полей с ответами, после чего при нажатии на кнопку Открыть задания ОГЭ откроется второй файл OrbitTeacherTaskL, НО изображения на местах QLable не появятся, а если запустить файл отдельно, то все работать будет.

Как это пофиксить?

Гугл диск:https://drive.google.com/drive/folders/1Rpa-KxfA0TC_IoQst7GLKwoxvhWx5mKb?usp=share_link

Внимание! Запускать программы стоит только в папке прикреплённой к данному вопросу в противном случаи программа не запуститься

UPD: Отредактировал файлы для лучшего понимания проблемы:

main.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
# Подключение графического интерфейса программы
from OrbitTeacherForm import Ui_OrbitTeacherForm

# Подключение второго рабочего окна
from main2 import Ui_OrbitTeacherTask


class MainWindow(QtWidgets.QMainWindow, Ui_OrbitTeacherForm):
    def __init__(self):
        super().__init__()

        self.setupUi(self)

        self.pushButton_2.clicked.connect(self.task)

    # Функция запуска окна с заданием
    def task(self):
        self.OrbitTeacherTask = QtWidgets.QMainWindow()
        self.ui = Ui_OrbitTeacherTask()
        self.ui.setupUi(self.OrbitTeacherTask)
        self.OrbitTeacherTask.show()


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle("Fusion")
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

main2.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
# Подключение графического интерфейса программы
from OrbitTeacherTask import Ui_OrbitTeacherTask

# Подключение библиотеки для загрузки изображений
from PyQt5.Qt import QPixmap

# Подключение модуля для работы с файлами
import os

# Подключение модуля для автоматического определения разрешения изображения
import PIL
from PIL import Image



class MainWindow(QtWidgets.QMainWindow, Ui_OrbitTeacherTask):
    def __init__(self):
        super().__init__()

        self.setupUi(self)

        # Активация функции применения текуших настроек приложения
        self.task_planned()


    # Функция загрузки заданных заданий
    def task_planned(self):
                self.directory_task = "G:\PyCharm\PyCharmProject\projectSAFTD_x32\OrbitTeacher/task/first_test"
                self.auto_img_size = True
                self.file_names = []
                self.task_code = []
                self.directory_task_number = []

                for file in os.listdir(self.directory_task):
                    if file.endswith(".jpg"):
                        self.directory_task_number.append(os.path.join(self.directory_task, file))
                        self.file_names.append(
                            (os.path.basename(os.path.join(self.directory_task, file)).split('.')[0]).split("_")[0])
                        self.task_code.append((os.path.basename(os.path.join(self.directory_task, file)).split('.')[0]))

                for a in range(0, len(self.file_names)):
                    img = PIL.Image.open(self.directory_task_number[a])
                    wid, hgt = img.size



                if self.auto_img_size == True:

                    for a in range(0, len(self.file_names)):
                        img = PIL.Image.open(self.directory_task_number[a])
                        wid, hgt = img.size

                        if self.file_names[a] == "1":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label.setPixmap(pixmap)
                            self.label.setScaledContents(True)
                            self.label.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "2":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_2.setPixmap(pixmap)
                            self.label_2.setScaledContents(True)
                            self.label_2.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "3":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_5.setPixmap(pixmap)
                            self.label_5.setScaledContents(True)
                            self.label_5.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "4":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_7.setPixmap(pixmap)
                            self.label_7.setScaledContents(True)
                            self.label_7.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "5":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_8.setPixmap(pixmap)
                            self.label_8.setScaledContents(True)
                            self.label_8.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "6":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_9.setPixmap(pixmap)
                            self.label_9.setScaledContents(True)
                            self.label_9.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "7":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_10.setPixmap(pixmap)
                            self.label_10.setScaledContents(True)
                            self.label_10.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "8":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_11.setPixmap(pixmap)
                            self.label_11.setScaledContents(True)
                            self.label_11.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "9":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_12.setPixmap(pixmap)
                            self.label_12.setScaledContents(True)
                            self.label_12.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "10":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_13.setPixmap(pixmap)
                            self.label_13.setScaledContents(True)
                            self.label_13.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "11":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_14.setPixmap(pixmap)
                            self.label_14.setScaledContents(True)
                            self.label_14.setFixedSize(wid, hgt)

                        elif self.file_names[a] == "12":
                            imagePath = self.directory_task_number[a]
                            pixmap = QPixmap(imagePath)
                            self.label_6.setPixmap(pixmap)
                            self.label_6.setScaledContents(True)
                            self.label_6.setFixedSize(wid, hgt)


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle("Fusion")
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

Вместо данной 31 строчки: self.directory_task = "G:\PyCharm\PyCharmProject\projectSAFTD_x32\OrbitTeacher/task/first_test"

Введите удобную вам директорию, для в которую положите любый изображения формата .jpg (или возьмите изображения из моего проекта) и переименуйте их в формат 1_123, 2_123 и т.д.

Ответы

▲ 1Принят

Попробуйте так:

q1484687_main.py

from PyQt5 import QtCore, QtGui, QtWidgets
from OrbitTeacherForm import Ui_OrbitTeacherForm

#from q1484687_main2 import Ui_OrbitTeacherTask                        #  нет
from q1484687_main2 import MainWindow  as OrbitTeacherTask             # <---- да


class MainWindow(QtWidgets.QMainWindow, Ui_OrbitTeacherForm):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.pushButton_2.clicked.connect(self.task)

    def task(self):
        print(f'def task(self):') #
        ''' нет
        self.OrbitTeacherTask = QtWidgets.QMainWindow()
        self.ui = Ui_OrbitTeacherTask()
        self.ui.setupUi(self.OrbitTeacherTask)
        self.OrbitTeacherTask.show()
        '''
        self.orbitTeacherTask = OrbitTeacherTask()                     # <---- да
        self.orbitTeacherTask.show()                                   # <---- да
        

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle("Fusion")
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения