Rikisan
@Rikisan
техник-программист

Python не находит путь к файлу?

При запуске скрипта через командную строку выдает ошибки
main.py

import sys
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication
import load_window


def close_App():
    QtWidgets.qApp.quit()


class ExampleApp(QtWidgets.QMainWindow, load_window.Ui_MainWindow):
    def __init__(self):
        super().__init__()

        # Скрываем заголовок окна
        self.setWindowFlag(Qt.FramelessWindowHint)
        # Устанавливаем заголовок
        self.setWindowTitle("no title")
        # Скрываем фон окна
        self.setAttribute(Qt.WA_TranslucentBackground)

        # Таймер для текста
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.onTicketText)
        self.timer.start(200)

        # Таймер для градиента
        self.timer2 = QtCore.QTimer()
        self.timer2.timeout.connect(self.onTicketGradient)
        self.timer2.start(100)

        self.setupUi(self)

        self.moveToCenter()

        self.initUI()

    def moveToCenter(self):
        screen_geometry = QApplication.desktop().availableGeometry()
        screen_size = (screen_geometry.width(), screen_geometry.height())
        win_size = (self.frameSize().width(), self.frameSize().height())
        x = int((screen_size[0] - win_size[0]) / 2)
        y = int((screen_size[1] - win_size[1]) / 2)
        self.move(x, y)

    ###########################################################################
    # Загрузка версии программы
    def loadVer(self):
        f = open('ver.txt', 'r')
        text_file = f.read()
        f.close()
        self.label_ver.setText(text_file)

    ###########################################################################

    ###########################################################################
    # Анимация текста
    def onTicketText(self):
        # загрузка наименования камеры из файла name.txt
        f = open('name.txt', 'r')  # открытие файла только на чтение
        text_file = '-- [ ' + f.read() + ' ] --'  # чтение текста файла
        f.close()  # закрытие файла

        self.label_cam_name.setText(text_file)  # применение текста

        # Изменение текста в зависимости от содержания
        text = self.label_load.text()  # получение текущего текста
        if text == '...':  # если изначальный текст то
            self.label_load.setText('Waiting for camera connection')  # изменить его на "Waiting for camera connection"
        elif text == 'Waiting for camera connection':  # если текст равен "Waiting for camera connection"
            self.label_load.setText('Waiting for camera connection.')  # изменить его на "Waiting for camera
            # connection."
        elif text == 'Waiting for camera connection.':  # если текст равен "Waiting for camera connection."
            self.label_load.setText('Waiting for camera connection..')  # изменить его на "Waiting for camera
            # connection.."
        elif text == 'Waiting for camera connection..':  # если текст равен "Waiting for camera connection.."
            self.label_load.setText('Waiting for camera connection...')  # изменить его на "Waiting for camera
            # connection..."
        else:  # иначе сбрасываем на начальное значение
            self.label_load.setText('Waiting for camera connection')  # изменить его на "Waiting for camera connection"

    ###########################################################################

    cy = 0.1  # начальное значение градиента
    rev = 0  # направление движения градиента

    ###########################################################################
    # Анимация градиентной заливки
    def onTicketGradient(self):
        if self.rev == 0:  # если реверс не включен
            if self.cy < 0.8:  # если значение меньше максимального
                self.cy += 0.1  # увеличивать значение
            else:  # иначе если значение больше максимального
                self.rev = 1  # включить реверс
        else:  # иначе если реверс включен
            if self.cy > 0.2:  # если значение больше минимального
                self.cy -= 0.1  # уменьшать значение
            else:  # иначе если значение меньше минимального
                self.rev = 0  # выключить реверс

        # создание стиля
        styler = '#frame_body_circl2{background-color: qconicalgradient(cx:0.5, cy:' + str(
            self.cy) + ', angle:0, stop:0 rgba(12, 103, 201, 0), stop:0.448276 rgba(12, 103, 201, 255), stop:1 rgba(' \
                       '255, 255, 255, 0));border-radius:150px;} '
        # применение стиля к анимации градиента
        self.frame_body_circl2.setStyleSheet(styler)

    ###########################################################################

    ###########################################################################
    # Инициализация формы
    def initUI(self):
        self.but_close.clicked.connect(close_App)  # добавление кнопки закртытия функцию
        self.loadVer()  # загрузка версии программы из файла ver.txt

    ###########################################################################

    ###########################################################################
    # Ожидание нажатие на клавиатуре Ctrl + Q (Тестовый пример обработки нажатия кнопок на клавиатуре)
    def keyPressEvent(self, e):
        if int(e.modifiers()) == Qt.Key_Control:  # если зажата кнопка Ctrl
            if e.key() == Qt.Key_Q:  # если нажата кнопка Q
                self.close()  # закрыть программу
    ###########################################################################


###########################################################################
# Инициализация и запуск формы
def main():
    app = QtWidgets.QApplication(sys.argv)
    window = ExampleApp()
    window.show()
    app.exec_()


if __name__ == '__main__':
    main()
###########################################################################


python3 /home/simix/PycharmProjects/SplashPyPolimech/main.py
Traceback (most recent call last):
  File "/home/simix/PycharmProjects/SplashPyPolimech/main.py", line 138, in <module>
    main()
  File "/home/simix/PycharmProjects/SplashPyPolimech/main.py", line 132, in main
    window = ExampleApp()
  File "/home/simix/PycharmProjects/SplashPyPolimech/main.py", line 37, in __init__
    self.initUI()
  File "/home/simix/PycharmProjects/SplashPyPolimech/main.py", line 115, in initUI
    self.loadVer()  # загрузка версии программы из файла ver.txt
  File "/home/simix/PycharmProjects/SplashPyPolimech/main.py", line 50, in loadVer
    f = open('ver.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'ver.txt'
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@bacon
Почитай про абсолютный и относительные пути.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rikisan
@Rikisan Автор вопроса
техник-программист
С путями разобрался. Теперь вопрос возник в том что .service запускается но ничего не выводит
[Unit]
Description=SplashScreen Polimech App
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python  /home/simix/PycharmProjects/SplashPyPolimech/main.py

[Install]
WantedBy=multi-user.target


systemctl stop splashAppPolimech
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 130 000 ₽
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽