import tkinter as tk from tkinter import messagebox, filedialog import pymysql from PIL import Image, ImageTk def clear(): en1.delete(0, 'end') en2.delete(0, 'end') def create_new_window(): new_window = tk.Toplevel(top) new_window.title('登录成功') new_window.geometry('200x150') label = tk.Label(new_window, text='恭喜您,登录成功!') label.pack() # 添加一个标签来显示图片 img_path = filedialog.askopenfilename(title='选择图片', filetypes=(('/3ec76bb35b3b32b2aaf27e8e343c1c88.jpg', '*.jpg'), ('/3ec76bb35b3b32b2aaf27e8e343c1c88.png', '*.png'))) if img_path: img = Image.open(img_path).resize((150, 150)) photo = ImageTk.PhotoImage(img) label_img = tk.Label(new_window, image=photo) label_img.photo = photo label_img.pack() def login(): username = en1.get() password = en2.get() db = pymysql.connect(host='localhost', user='root', passwd='123456', charset='utf8') cursor = db.cursor() cursor.execute("USE dl") sql = "SELECT * FROM users WHERE username='%s'" % username cursor.execute(sql) result = cursor.fetchone() if result is None: messagebox.showerror(title='登录失败', message='用户名错误,登录失败') else: if result[2] != password: messagebox.showerror(title='登录失败', message='密码错误,登录失败') else: create_new_window() db.close() top = tk.Tk() top.title('登录') top.geometry('300x180') # 添加一个菜单栏 menubar = tk.Menu(top) filemenu = tk.Menu(menubar, tearoff=0) filemenu.add_command(label="打开", command=create_new_window) menubar.add_cascade(label="文件", menu=filemenu) top.config(menu=menubar) label1 = tk.Label(top, text='用户名:', width=6) label1.place(x=50, y=30) en1 = tk.Entry(top, width=20) en1.place(x=100, y=30) label2 = tk.Label(top, text='密码:', width=6) label2.place(x=50, y=60) en2 = tk.Entry(top, width=20, show='*') en2.place(x=100, y=60) bt1 = tk.Button(top, width=10, text='登录', command=login) bt1.place(x=50, y=100) bt2 = tk.Button(top, width=10, text='清除', command=clear) bt2.place(x=170, y=100) top.mainloop()当单击“打开”按钮时,在顶层窗口中显示图片“zsy.jpg
时间: 2024-03-19 21:45:00 浏览: 128
好的,以下是根据您提供的代码实现在顶层窗口中显示图片“zsy.jpg”的方法:
1. 首先导入PIL库中的Image和ImageTk模块,以及filedialog模块用于打开文件对话框。
2. 在create_new_window()函数中添加代码,用于打开文件对话框选择图片,并显示在新窗口中。具体实现代码如下:
``` python
from tkinter import filedialog
from PIL import Image, ImageTk
def create_new_window():
new_window = tk.Toplevel(top)
new_window.title('登录成功')
new_window.geometry('200x200')
label = tk.Label(new_window, text='恭喜您,登录成功!')
label.pack()
# 添加一个标签来显示图片
img_path = filedialog.askopenfilename(title='选择图片', filetypes=(('JPEG files', '*.jpg'), ('PNG files', '*.png')))
if img_path:
img = Image.open(img_path).resize((150, 150))
photo = ImageTk.PhotoImage(img)
label_img = tk.Label(new_window, image=photo)
label_img.photo = photo
label_img.pack()
```
在这里,我们使用filedialog.askopenfilename()方法来打开文件对话框选择图片,然后使用PIL库中的Image模块打开并调整图片的大小,最后使用ImageTk模块创建PhotoImage对象,并将其设置为标签的图像。
3. 在菜单栏中添加“打开”按钮,并将其命令设置为create_new_window()函数,以便单击时打开文件对话框选择图片。具体实现代码如下:
``` python
menubar = tk.Menu(top)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="打开", command=create_new_window)
menubar.add_cascade(label="文件", menu=filemenu)
top.config(menu=menubar)
```
在这里,我们创建了一个菜单栏,并在其中添加一个“文件”菜单,然后在该菜单下添加一个“打开”命令,将其命令设置为create_new_window()函数,以便单击时打开文件对话框选择图片。
这样,在单击“打开”按钮时,将会弹出文件对话框,选择图片后将在新窗口中显示图片。
阅读全文