Я столкнулся с некоторыми проблемами понимания, так как я пытаюсь погрузиться в программирование gui pyqt.Почему мои определения исчезли при использовании exec() с pyqt?
Я использую
exec(open("./regression.py").read())
внутри моей PyQt графического интерфейса программы вызвать скрипт, где мои расчеты сделаны после того, как пользователь толкнул некоторые кнопки (они определяют некоторые переменные в regression.py)
так что если Я запускаю это в пустом скрипте, все мои определения вызываются (и я вижу их в проводнике переменных).
Если я пытаюсь запустить это в своей программе gui - скрипт выполняется, но если бы я хотел повторно использовать одну переменную или метод, определенный в регрессии.py в другом действии моего gui, это невозможно. Все прошло после казни.
...
self.connect(self.buttonOK,
QtCore.SIGNAL("clicked()"), self.onOK)
def onOK(self):
if self.button1.checkState():
a=3
if self.button2.checkState():
a=1
exec(open("./regression.py").read())# this scripts takes the value of "a" to run
# it prints some calculations - but everything is gone after pressing "OK" button
app = QtGui.QApplication(sys.argv)
dialog = MeinDialog()
dialog.show()
Почему это так? как я могу найти решение? мой метод плевки gui и фактических расчетов с использованием модулей, таких как numpy и так далее?
Если вы используете 'exec()' *, вы делаете это ** неправильно ***! Кроме того, не публикуя содержимое './Regression.py', мы не можем сказать, что не так. Я не понимаю, почему вы не можете просто определить функцию 'compute (a)' in './Regression.py' и выполнить импортную регрессию; regression.compute (a) 'вместо вызова' exec() '. – Bakuriu
Я могу, но для функции ясно, что после выполнения все определенные переменные исчезли ... Мне нужно что-то, что поддерживает процесс, в котором работает сценарий, так что если другой скрипт (другое событие кнопки) называется всем, что имеет были определены ранее ... я открыт для другого способа определить какие-то подфункции для моего сценария «regression.py», который выполняется на каждом событии (кнопка нажмите). В «Regression.py» я использую матрицу, содержащую мои DATA, - это разделение на функции и одну цель, а векторная регрессия поддержки устранена с помощью scikit-learn ... – Hiatus
[ссылка] http://scikit-learn.org /stable/modules/generated/sklearn.svm.SVR.html посмотрите на методы ... скажем, у меня есть кнопка с «методом поезда» .. и другая с «методом предсказания» - если после нажатия кнопки мои определения исчезли, я не могу использовать «предсказание» сразу после нажатия «метода поезда» - мне нужно запустить весь код, который находится в «скрипте прогнозирования», и добавить строку 'clf.fit (X, y)' so для каждая кнопка мне нужно скопировать и вставить код в нужный «расчет кнопки» - – Hiatus