У меня есть большая функция (ы) (600+ строк), которую я не хочу удалить из моего основного кода для удобства чтения, однако я не могу ссылаться на функцию внутри мой класс главного окна. Если я перемещаю оператор import внутри класса, он работает без сбоев, но я планирую использовать его в другом месте, поэтому не хочу импортировать его несколько раз. Есть ли простой способ ссылаться на импортированную функцию из окна?Невозможно подключить функцию, импортированную за пределами класса qt
import sys
import cv2
from PySide import QtCore
from PySide import QtGui
import mainWindowUI
from videoFunctions import videoFeed
class MainWindow(QtGui.QMainWindow, mainWindowUI.Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.setup_camera()
def setup_camera(self):
self.capture = cv2.VideoCapture(0)
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.videoFeed)
self.timer.start(30)
app = QtGui.QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()
Traceback:
File "<stdin>", line 1, in <module>
File "C:\WinPython\python-2.7.10.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 790, in runfile
execfile(filename, namespace)
File "C:\WinPython\python-2.7.10.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 77, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
File "C:/Scanner.py", line 42, in <module>
form = MainWindow()
File "C:/Scanner.py", line 17, in __init__
self.setup_camera()
File "C:/Scanner.py", line 37, in setup_camera
self.timer.timeout.connect(self.videoFeed)
AttributeError: 'MainWindow' object has no attribute 'videoFeed'
Никакой функции не должно быть 600 строк. Даже 60 его подталкивает. –
Эта функция на самом деле существенно меньше (~ 100 строк), их всего полтора десятка (это было грубое упрощение). Итог: у меня есть большой кусок кода. Я не перехожу к отдельному скрипту и не могу понять, как это сделать, сохраняя импорт в верхней части файла. – blakebjorn
. Вы имеете в виду функцию, как будто это был метод, которого нет (потому что вы вывели его из класса). Должен ли быть метод - то есть он ссылается на другие данные в этом классе? –