Я пытаюсь завершить свое первое учебное приложение для Python, я использовал конструктор PyQT5 для создания базового пользовательского интерфейса и использовал следующее, чтобы проверить, и я получаю ошибку NameError: global name 'self' is not defined
. Мой вопрос заключается в том, что является правильной процедурой для обновления txtProg
(текстовый редактор) в графическом интерфейсе.Self scope в приложении PyQT5?
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'main.ui'
#
# Created: Sun Dec 1 20:19:03 2013
# by: PyQt5 UI code generator 5.1.1
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from mydl import TheDLClass
def progress_hook(txt):
self.txtProg.setText(txt)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.txtProg = QtWidgets.QPlainTextEdit(self.centralwidget)
self.txtProg.setGeometry(QtCore.QRect(50, 80, 661, 431))
self.txtProg.setObjectName("txtProg")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.launchit(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "My Downloader"))
def launchit(self, MainWindow):
MainWindow.setWindowTitle('Launching..')
with TheDLClass() as dl:
dl.fd.add_progress_hook(progress_hook)
dl.download(['http://myurl.com/'])
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Теперь это 'AttributeError: объект 'Ui_MainWindow' не имеет атрибута 'progress_hook'' – Stacked
@Stacked, вы определили 'progress_hook' как' Ui_MainWindow'? – falsetru
Нет, как это сделать? – Stacked