Недавно я начал изучать Python + PyQt5. Пожалуйста, помогите мне понять, как вызов функции класса внутри другого класса в python.
У меня есть следующий код
from PyQt5 import QtGui, QtWidgets, QtCore, uic
from PyQt5.Qt import *
class mywindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
QtWidgets.QMainWindow.__init__(self)
self.ui = uic.loadUi('test.ui', self)
self.resize(820, 300)
self.setFixedSize(self.size())
self.pushButton.clicked.connect(self.getValue)
self.thread = {}
self.pushButtonStart.clicked.connect(self.start_worker_1)
self.pushButtonStop.clicked.connect(self.stop_worker_1)
def getValue(self):
self.value = self.spinBox.value()
i = 1
while i <= self.value:
os.system('test1.py')
i += 1
else:
print('End, i =', i)
def start_worker_1(self):
self.thread[1] = ThreadClass(parent=None, index=1)
self.thread[1].start()
self.pushButtonStart.setEnabled(False)
self.pushButtonStop.setEnabled(True)
def stop_worker_1(self):
self.thread[1].stop()
self.pushButtonStart.setEnabled(True)
self.pushButtonStop.setEnabled(False)
class ThreadClass(QtCore.QThread):
any_signal = QtCore.pyqtSignal(int)
def __init__(self, parent=None, index=0):
super(ThreadClass, self).__init__(parent)
self.index = index
self.is_running = True
def run(self):
print('Start...', self.index)
a = mywindow()
a.getValue()
def stop(self):
self.is_running = False
print('Stop...', self.index)
self.terminate()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
application = mywindow()
application.show()
sys.exit(app.exec())
Мне нужно, чтобы файл test.py выполнялся столько раз, сколько указано в spinBox
Start... 1
End, i = 1
Если я делаю пока while i <= 4:
то работает. Но не работает, если я передаю self.value из SpinBox. Что я делаю не так?
mywindow
вместо того, чтобы использовать существующий; 2. доступ к объектам пользовательского интерфейса запрещен из внешних потоков, поэтому вместо этого следует использовать сигналы: даже если бы вы могли вызвать метод текущего экземпляра, это, вероятно, привело бы к сбою вашей программы. - person musicamante   schedule 13.05.2021run()
:a = mywindow()
. - person musicamante   schedule 13.05.2021a = mywindow()
в каждом потоке. Кроме того, это запрещено в Qt - person eyllanesc   schedule 13.05.2021