我正在尝试制作一个可以创建日语anki deck的应用程序,我已经有了代码,但我想用该代码制作一个应用程序,如果您进入“创建anki deck”,输入kanjis和名称文件,然后按“Es”(现在只适用于西班牙语),您会收到以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
return self.func(*args)
File "/home/cristobal/Documentos/Programation/Python/Japanese/kanjiGraphics.py", line 255, in <lambda>
self.languageButtons.append(tkinter.Button(self.window, text = i.capitalize(), bg = "#ffffff", fg = "#2c2c2c",bd = "3", highlightcolor = "#f5f5f5", font = font, command= lambda: self.WriteCalc(self.kanjisEntry[1].get("1.0", "end"), self.kanjisEntry[0].get("1.0", "end"), kanji.GetKanjiMeaningsEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiReadingsEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiExpamplesEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiExampleReadingsEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiExampleMeaningEs(self.kanjisEntry[0].get("1.0", "end")))))
File "/home/cristobal/Documentos/Programation/Python/Japanese/kanji.py", line 282, in GetKanjiReadingsEs
readings = paragraph[0].text
IndexError: list index out of range
我做了print(len(parapragh))
(段落是存储日语字符(kanjis)信息的页面),在那里我得到了错误,首先我得到了82,但它再次打印0,可能是请求或idk:/
此外,如果打印paragraph[0]
,它将一直工作到readings = paragraph[0]
这可能与参数函数有关,因为在本部分中,我必须将函数作为参数传递:
self.languageButtons.append(tkinter.Button(self.window, text = i.capitalize(), bg = "#ffffff", fg = "#2c2c2c",bd = "3", highlightcolor = "#f5f5f5", font = font, command= lambda: self.WriteCalc(self.kanjisEntry[1].get("1.0", "end"), self.kanjisEntry[0].get("1.0", "end"), kanji.GetKanjiMeaningsEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiReadingsEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiExpamplesEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiExampleReadingsEs(self.kanjisEntry[0].get("1.0", "end")), kanji.GetKanjiExampleMeaningEs(self.kanjisEntry[0].get("1.0", "end")))))
下面是返回错误的脚本 返回错误的函数是GetKanjisReadingEs()
#Libraries
import webbrowser #This library open pages in your main web browser
import requests #This library get the html code of a page
from bs4 import BeautifulSoup #This library prettify the html code
#Get Kanjis Meanings
def GetKanjiMeaningsEs(kanjis):
allMeanings = []
#Get the meaning of japanese character
return allMeanings
#Get japanese characters readings
def GetKanjiReadingsEs(kanjis):
allReadings = [] #The list where the readings will be stored
for kanji in kanjis: #This for goes trough all the japanese characters you pass
kanjiURL = f"https://japonesbasico.com/kanji/{kanji}" #The link
kanjiRequest = requests.get(kanjiURL) #Get the page from the link
soup = BeautifulSoup(kanjiRequest.text, "html.parser") #Get the html code of the page
paragraph = soup.select("p") #Get all the elements with <p> tag in soup
print(len(paragraph)) #This print for no reason prints twice, first 83 and second 0 (i think this is why index out of range)
readings = paragraph[0].text #Get the first <p> tag what always is the readings #Here i get the error
end = readings.find("Lecturas japonesas") #Get the value where it has to stop
chineseReadings = "" #Where the chinese reading (onyomi) of the character will be stored
japaneseReadings = "" #Where the japanese reading (kunyomi) of the character will be stored
e = 0 #This is a counter
for i in readings:
if e > len("Lecturas chinas") and e < end: #Get the characters between the word chinese readings and the word japanese readings
chineseReadings += i
e += 1
e = 0
for i in readings:
if e >= end + len("Lecturas japonesas: "): #Get the characters between the word japanese readings and the end
japaneseReadings += i
e += 1
allReadings.append([chineseReadings, japaneseReadings]) #Add the readings of one kanji, more kanjis more elements
return allReadings
#Get words with the kanjis
def GetKanjiExpamplesEs(kanjis):
allExamples = []
#Get examples of japanese characters
return allExamples
def GetKanjiExampleReadingsEs(kanjis):
allExampleReadings = []
#Get the reading (how to read) the examples
return allExampleReadings
#Get example words meaning with the notes (the parentesis after the reading) of the kanji
def GetKanjiExampleMeaningEs(kanjis):
allExampleMeanings = []
#Get the meaning of the examples
return allExampleMeaning
这是我代码的“tkinter”部分:https://paste.pythondiscord.com/ilinonugum.rb
以下是获取日语字符信息的代码:https://paste.pythondiscord.com/kotapiwosi.py
下面是运行应用程序的代码(仅安装类):https://paste.pythondiscord.com/imuvuyikoy.py
目前没有回答
相关问题 更多 >
编程相关推荐