如何连接API标签小部件在python tkinter?



我正在使用python tkinter和sqlite3为员工管理系统制作gui。在这个gui中,用户可以添加、查看、删除和更新员工信息。也将有报价日标签,这将通过数据提取使用api完成。gui中的报价将根据api更改。

from tkinter import *
from tkinter.messagebox import *
from datetime import *
from tkinter.scrolledtext import *
from sqlite3 import *
import matplotlib.pyplot as plt
import requests
import bs4
def quote_label(mw_lbl_quote):
def quote():
try:
wa = "https://www.brainyquote.com/quote_of_the_day" 
res = requests.get(wa)
data = bs4.BeautifulSoup(res.text, "html.parser")
info = data.find("img",{"class","p-qotd"})
q = info["alt"]
label.config(text=str(q))
except Exception as e:
showerror("issue ", e)
mw_lbl_quote = Label(main_window, text="Quote of the Day", font=f)
mw_lbl_quote.pack()
quote_label(mw_lbl_quote)

当我运行代码时,引号不显示。我不知道我做错了什么,因为当我运行它时没有显示错误。我该怎么做才能弥补呢?

有几点需要指出:

  • 您使用主main_window创建您的标签,该标签在您发布的代码中不存在。您必须通过添加main_window = Tk()以及通过main_window.mainloop()在代码末尾启动GUI来创建它。我确信这是在你的代码的其他地方,我重命名为root并添加它是可重复的。
  • 同样在你的标签中,你指定了font=f,并且f也不存在。把它删掉
  • 函数调用错误。在这里看看函数是如何工作的。在我的例子中,我添加了一个按钮来调用函数并纠正它。
  • 在你的函数中,你试图配置你的标签label,但是你将你的标签定义为mw_lbl_quote
  • 一般来说,星型导入是一个坏主意,所以我用你想要导入的实际类替换它们,并注释掉那些你不使用的。
from tkinter import Tk, Label, Button
# from tkinter.messagebox import *
# from datetime import *
# from tkinter.scrolledtext import *
# from sqlite3 import *
# import matplotlib.pyplot as plt
import requests
import bs4
def quote_label():
try:
wa = "https://www.brainyquote.com/quote_of_the_day" 
res = requests.get(wa)
data = bs4.BeautifulSoup(res.text, "html.parser")
info = data.find("img",{"class","p-qotd"})
q = info["alt"]
mw_lbl_quote.config(text=f"Quote of the day: {q}")
except Exception as e:
print(e)
root = Tk()
mw_lbl_quote = Label(root, text="Quote of the day: ")
mw_lbl_quote.pack()
mw_btn_quote = Button(root, text="Call the function", command=quote_label)
mw_btn_quote.pack()
root.mainloop()

最新更新