嗨,请告诉我如何在tkinter窗口中显示存储在数据库中的图像
选择 | 换行 | 行号
- import tkinter as tk
- from tkinter import *
- from PIL import Image, ImageTk
- from tkinter import filedialog
- from tkinter import ttk
- import sqlite3 as sq
- import base64
- window= tk.Tk()
- window.geometry('70x70')
- load = Image.open("hqdefault.jpg")
- render = ImageTk.PhotoImage(load)
- img = Label(window, image=render,width=10,height=10)
- img.image = render
- img.place(x=0, y=0)
- def browse():
- filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
- print (filename)
- entry.delete(0,END)
- entry.insert(tk.END, filename)
- button=ttk.Button(text='Browse',command=browse)
- button.grid()
- data=tk.StringVar()
- entry=ttk.Entry(textvariable=data)
- entry.grid()
- name='Davies'
- db=sq.connect('img.db')
- conn=db.cursor()
- conn.execute('''
- CREATE TABLE IF NOT EXISTS images(name TEXT, data BLOB)''')
- db.commit()
- db.close()
- def write_file(data, filename):
- # Convert binary data to proper format and write it on Hard Disk
- with open(filename, 'wb') as file:
- file.write(data)
- def display():
- db=sq.connect('img.db')
- conn=db.cursor()
- conn.execute('''SELECT * FROM images''')
- row=conn.fetchall()
- for i in row:
- it=i[1]
- this= open(str(len(i[1])),'wb')
- this.write(base64string.decode('base64'))
- this.close
- imgd=ImageTk.PhotoImage(this)
- panel=tk.Label(image=imgd,height=28,width=30)
- panel.image = imgd
- panel.grid()
- db.close()
- def add_img():
- db=sq.connect('img.db')
- conn=db.cursor()
- with open(str(data.get()),'rb') as f:
- file=f.read()
- with open('yhu.png','wb') as p:
- p.write(f)
- conn.execute(''' INSERT INTO images(name,data)VALUES(?,?)''',(name,file))
- db.commit()
- db.close()
- upload=ttk.Button(text='Upload',command=add_img)
- upload.grid()
- display=ttk.Button(text='Display', command=display)
- display.grid()
- window.mainloop()