如何解决Tkinter回调Python IndexError中的Tkinter异常:列表索引超出范围
我正在尝试制作一个可以创建日语 anki 套牌的应用程序,我已经有了代码,但我想用该代码制作一个应用程序,如果您转到“创建 Anki 套牌”,请输入汉字和名称文件并按«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",kanji.GetKanjiMeaningsEs(self.kanjisEntry[0].get("1.0","end")),kanji.GetKanjiReadingsEs(self.kanjisEntry[0].get("1.0",kanji.GetKanjiExpamplesEs(self.kanjisEntry[0].get("1.0",kanji.GetKanjiExampleReadingsEs(self.kanjisEntry[0].get("1.0",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))
(段落是存储日语字符(汉字)信息的页面)在那里我得到了错误,首先我得到了 82,但它再次打印了 0,也许是请求或 ID:/
此外,如果您打印 paragraph[0]
,它会一直工作到 readings = paragraph[0]
它可能与参数函数有关,因为在这部分我必须将函数作为参数传递:
self.languageButtons.append(tkinter.Button(self.window,"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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。