Я пытаюсь объединить возможности графического интерфейса Kivy с написанной мной функцией Python. Но всякий раз, когда я вызываю функцию для одного из моих Screen
классов, все приложение вылетает и потребляет мою память и использование процессора.
По сути, я пытаюсь получить переменную global where
из функции сравнения fn_compare
, которая включает в себя два файла csv. Затем я собираюсь использовать эту переменную в трех других функциях. Функция fn_verifier
состоит в том, чтобы использовать эту переменную global where
для проверки любой из 26 букв алфавита, которая ей соответствует, и затем воспроизводить звук.
class Identifier:
def fn_compare(self):
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()]
global where
where=match[0]
time.sleep(1)
count = count + 1
def fn_verify(self):
global where
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
Теперь это та часть, где происходит сбой приложения.
class LetterAScreen(Screen):
def on_enter(self):
self.loader(
def loader(self):
self.identity()
self.verifier()
def identity(self):
global where
iden=Identifier()
lol.fn_compare()
def verifier(self):
iden=Identifier()
global where
count = 1
while (count>0 and where != 1):
self.identity()
count=count+1
iden.fn_verify()
Я планирую иметь 26 экранов, A-Z, все с одинаковыми функциями. Тем не менее, я даже не могу прогрессировать с одним. Проблема здесь в том, что когда я вхожу в указанный экран, приложение вылетает, а память и процессор перегружаются. В коде я попытался выполнить функцию identity
для запуска функции fn_compare
. Затем класс verifier
решит, равен ли global where variable
1
или letetr A
. Как только она становится True, я попытался поставить функцию fn_verify
, когда цикл заканчивается, чтобы она воспроизводила звук только тогда, когда переменная global where
соответствует 1
.
Что может быть причиной сбоя и как мне это решить? Я новичок в Python и Kivy, и я действительно хочу узнать больше. Я надеюсь, вы могли бы помочь мне.