在网上找了三四天资料没有一个正经给出文案的,都是抄来抄去,而且明明是抄的还是写自己原创。真是服了。最后还是自己写了一个,有很多胎教级别的小白不太懂,想着怕再走自己的弯路,就想着分享出来。这里以豆瓣电影排行榜为例,效果如下:
只要是选中,二维码图片都会时时变化,这里面的处理逻辑是这样的:
1、采集(这个不会的,就再回回炉)
2、将选中Listbox后获得的值再重新处理,比如会用到保存的文件名(这个是较重要的)
3、最后把图片保存到本地
4、另外label标签拿本地相应的图片。
废话不多说直接上代码:
from tkinter import *
import tkinter as tk
import requests
import re
import qrcode
from PIL import Image, ImageTk
movie_title = []
for page in range(0,50,25):
url = 'https://movie.douban.com/top250?start=' + str(page) + '&filter='
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
url_cont = requests.get(url, headers=headers)
url_text = str(url_cont.text)
obj = re.compile(r'<div class="hd">\s+<a href="(?P<a>.*?)" class="">\s+<span class="title">(?P<tit>.*?)</span>\s+', re.S)
res = obj.finditer(url_text)
for i in res:
movie_title.append(i.group('a'))
movie_yuanzu = tuple(movie_title)#记得把List转成元组
def getListBoxValue(event):
index=lb.curselection()
labelVal.set(lb.get(index))
content = lb.get(index)
img_name = str(content).split("/")[-2]
global img,img_local
qr = qrcode.QRCode(
version=2, # 二维码的边长
# ERROR_CORRECT_H: 30%的字码可被容错,因为插入了图片,所以增加容错率
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=6,
border=2,
)
qr.make(fit=True)
qr.add_data(content)
img = qr.make_image()
# 给二维码加图片
# 把颜色模式转换为RGBA,它表示带透明度掩模的真彩色
qr.clear()
img.save('ewm/' + img_name + '.jpg')
pic = Image.open('ewm/' + img_name + '.jpg')
photo = ImageTk.PhotoImage(pic)
pic_ewm = Label(listWin, width=260, height=260, background='pink', image=photo)
pic_ewm.place(x=590, y=280)
pic_ewm.image = photo
listWin=tk.Tk()
listWin.title('列表窗口')
listWin.geometry('900x800')
lbVal=StringVar()
lbVal.set(movie_yuanzu)
lb=Listbox(listWin,listvariable=lbVal,width=100)
lb.bind("<<ListboxSelect>>",getListBoxValue)
lb.grid(column=0)
labelVal=StringVar()
lab=Label(listWin,text='',background='white',width=50,height=20,textvariable=labelVal)
lab.grid(column=0)
lab.grid(column=0)
listWin.mainloop()
有不懂的可以随时私信我
这里要很感谢一篇文章:解决_tkinter.TclError: image “ ..... “ doesn‘t exist_weixin_45961741的博客-CSDN博客
最后是文中提到的label.image=ph 帮到了我。