Я новичок в Python, работающий над простым приложением для нашего проекта в последний год. Это единственная часть, которую я не могу решить, и я был бы очень признателен за вашу помощь. Мне нужно взять значение из обновленного CSV-файла, получить первый элемент и сопоставить его со ссылкой CSV. Эта часть уже работает. Затем мне нужно, чтобы он воспроизводил соответствующий звук в соответствии со звуком. Эта часть также уже работает.
Однако, поскольку он будет расположен в приложении Kivy, мне нужно создать несколько классов. Некоторые будут обрабатывать данные, а часть Kivy - часть отображения. Но мой вопрос сегодня касается части Python, а не Kivy.
Первый класс обрабатывает csv, playsound и numpy match.
Во втором классе я попытался вызвать функции первого класса для их запуска. Я также попытался получить переменную where
, присутствующую в первом классе, чтобы я мог использовать ее в операторе if для проверки соответствия и вывода текстового дисплея.
import serial
import sys
import numpy as np
import time
import csv
import os
import string
import collections
from playsound import playsound
from pathlib import Path
import os, sys
#import keyboard
class Identifier:
def csvwriter(self): #function for writing csv file
try:
ser = serial.Serial('COM10', baudrate=9600)
ser.flushInput()
while True:
ser_bytes = ser.readline()
print(ser_bytes)
file = open("letterz5.csv", "a")
file.write(str(ser_bytes))
file.close()
# if keyboard.is_pressed('esc'):
# break;
ser.close
except:
print("Unexpected error:", sys.exc_info()[0])
print("Unexpected error:", sys.exc_info()[1])
def fn_voice(self): #function for parsing and comparing csv file.
count=1
while (count>0):
livecsv=np.genfromtxt("lettera.csv", delimiter=",", skip_header=1, filling_values=np.nan, dtype=int, case_sensitive=True, deletechars='', replace_space=' ')
refcsv=np.genfromtxt("refcsv1.csv", delimiter=",", skip_header=1, filling_values=np.nan, dtype=int, case_sensitive=True, deletechars='', replace_space=' ')
A=np.array(livecsv)
B=np.array(refcsv)
D = B - A[-1]
match= B[np.abs(D).sum(axis=1).argmin()]
where=match[0]
voice=fn_voice(where)
time.sleep(1)
count = count + 1
var=where
if var==1:
A=playsound('audio-alphabet/A.wav',True)
return A
elif var==2:
B=playsound('audio-alphabet/B.wav',True)
return B
elif var==3:
C=playsound('audio-alphabet/C.wav',True)
return C
elif var==4:
D=playsound('audio-alphabet/D.wav',True)
return D
elif var==5:
E=playsound('audio-alphabet/E.wav',True)
return E
elif var==6:
F=playsound('audio-alphabet/F.wav',True)
return F
elif var==7:
G=playsound('audio-alphabet/G.wav',True)
return G
elif var==8:
H=playsound('audio-alphabet/H.wav',True)
return H
elif var==9:
I=playsound('audio-alphabet/I.wav',True)
return I
elif var==10:
J=playsound('audio-alphabet/J.wav',True)
return J
elif var==11:
K=playsound('audio-alphabet/K.wav',True)
return K
elif var==12:
L=playsound('audio-alphabet/L.wav',True)
return L
elif var==13:
M=playsound('audio-alphabet/M.wav',True)
return M
elif var==14:
N=playsound('audio-alphabet/N.wav',True)
return N
elif var==15:
O=playsound('audio-alphabet/O.wav',True)
return O
elif var==16:
P=playsound('audio-alphabet/P.wav',True)
return P
elif var==17:
Q=playsound('audio-alphabet/Q.wav',True)
return Q
elif var==18:
R=playsound('audio-alphabet/R.wav',True)
return R
elif var==19:
S=playsound('audio-alphabet/S.wav',True)
return S
elif var==20:
T=playsound('audio-alphabet/T.wav',True)
return T
elif var==21:
U=playsound('audio-alphabet/U.wav',True)
return U
elif var==22:
V=playsound('audio-alphabet/V.wav',True)
return V
elif var==23:
W=playsound('audio-alphabet/W.wav',True)
return W
elif var==24:
X=playsound('audio-alphabet/X.wav',True)
return X
elif var==25:
Y=playsound('audio-alphabet/Y.wav',True)
return Y
elif var==26:
Z=playsound('audio-alphabet/Z.wav',True)
return Z
os.system("rm lettera.csv")
class LetterAScreen(Identifier):
def identity(self): #I tried to call the functions of Identifier class here but they won't run
fn_voice() #I need the playsound part to only return playsound when the input data is correct
fn_csvwriter()
iden=fn_voice().where #I need to get the variable 'where' from fn_voice() but I can't seem to get it
def verifier(self):
verify=identity.iden
if verify == 1:
print ("correct")
else:
print ("incorrect")
Как мне это сделать? Как мне запустить весь первый класс и как извлечь переменную where
, чтобы я мог использовать ее в функции verifier
? Большое спасибо.