扔了一个小GUI。问题是 Tkinter 在通过请求库发送请求时冻结。
from tkinter import *
import requests
def rel_on():
requests.get('http://192.168.1.100/led_on')
sc = Tk()
bt_rel = Button(text="Вкл", command=rel_on); bt_rel.pack()
sc.mainloop()
扔了一个小GUI。问题是 Tkinter 在通过请求库发送请求时冻结。
from tkinter import *
import requests
def rel_on():
requests.get('http://192.168.1.100/led_on')
sc = Tk()
bt_rel = Button(text="Вкл", command=rel_on); bt_rel.pack()
sc.mainloop()
如果请求的结果不重要(如果您不需要在图形界面中显示),您可以简单地在单独的线程中发送请求(
print
添加以便在控制台中可以看到请求已经完全的):对于更复杂的情况,如果调用的结果需要在 GUI 中显示,使用异步方式和aiohttp代替请求更方便,如本答案中的第二个示例:How to insert an image from a tkinter 中的网站?
使用模块
async_tkinter_loop
,它允许您使用异步函数作为 tkinter 中的处理程序,并使用httpx
(而不是requests
)异步发送 HTTP 请求: