Итак, у меня есть два .py файла. Один из них - main.py, а второй - animation.py
. В main.py есть функции, где я вызываю animation.py. main.py генерирует фактический графический интерфейс для моей программы. Animation.py - это в основном gif-файл, запускаемый в окне PyQt.
Функция внутри main.py:
import animation
import subprocess as sp
p = sp.Popen('animation.py')
Код анимации py:
import sys
from PyQt5.QtCore import QSize
from PyQt5.QtGui import QMovie, QPainter, QPixmap
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget
from PyQt5 import QtCore, QtGui, QtWidgets
class UIWindow(QWidget):
def __init__(self, parent=None):
super(UIWindow, self).__init__(parent)
self.resize(QSize(600, 750))
self.activateWindow()
self.message = QPushButton("Waiting for Parsing to finish!", self)
self.message.resize(300,50)
self.message.move(150, 0)
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setGeometry(50, 50, 600, 500)
self.setFixedSize(600, 500)
self.startUIWindow()
self.movie = QMovie("mr.bean_waiting.gif")
self.movie.frameChanged.connect(self.repaint)
self.movie.start()
def startUIWindow(self):
self.Window = UIWindow(self)
self.setWindowTitle("Not soooo fast!")
self.show()
def paintEvent(self, event):
currentFrame = self.movie.currentPixmap()
frameRect = currentFrame.rect()
frameRect.moveCenter(self.rect().center())
if frameRect.intersects(event.rect()):
painter = QPainter(self)
painter.drawPixmap(frameRect.left(), frameRect.top(), currentFrame)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
sys.exit(app.exec_())
Теперь я запускаю следующую команду для упаковки моего кода:
pyinstaller -y --clean --onefile \Users\user1\main.py
Когда я запускаю свой файл main.exe, это сообщение появляется в консоли, когда предполагается запустить анимацию:
python: can't open file 'animation.py': [Errno 2] No such file or directory
Так, как я могу решить эту проблему? Я думал - один файл должен упаковать все, что нужно main.py в исполняемый файл? Нужно ли упаковать animation.py в исполняемый файл и поместить его в ту же папку, где находится main.exe?