ui is not definted Как Решить?

from PyQt5 import QtWidgets
from script import Ui_MainWindow
from PyQt5.QtCore import QProcess
import sys

class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        ui.pushButton.clicked.connect(self.runWallpaper)

    def runWallpaper(self):
        process = QProcess()

        arguments = []
        arguments.append("run mpv --wid=66566 Test.wmv --loop=inf --player-operation-mode=pseudo-gui --force-window=yes --no-audio")

        # Приложение 'wp' должно быть прописано глобально, либо к нему должен быть указан путь
        process.start("wp", arguments);

        # ИЛИ
        # process->start("<путь/к/приложению/>wp", arguments);
        

app = QtWidgets.QApplication([])
application = mywindow()
application.show()

***>

python main.py
Traceback (most recent call last):
  File "main.py", line 27, in <module>
    application = mywindow()
  File "main.py", line 11, in __init__
    ui.pushButton.clicked.connect(self.runWallpaper)
NameError: name 'ui' is not defined


Ответы (1 шт):

Автор решения: Maxim Timakov

Эта ошибка возникает так как вы пытаетесь обратиться к переменной ui, которой не существует.

В вашем коде есть поле ui класса mywindow.

Исправлением будет добавление self. перед ui

class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.runWallpaper)
        # ^
        # |
        # +- ui.pushButton.clicked.connect(self.runWallpaper)
→ Ссылка