import tkinter #导入tkinter模块 top = tkinter.Tk() #创建一个顶层窗口对象 label = tkinter.Label(top,text='Hello World',fg='red')#添加一个Label控件,用于显示文本 label.pack() #调用Label控件的pack()方法 top.mainloop()
时间: 2024-01-24 22:20:25 浏览: 69
这是一个简单的使用 tkinter 模块创建窗口并显示文本的程序。首先导入 tkinter 模块,然后创建一个顶层窗口对象 top,接着创建一个 Label 控件 label,并设置其文本和前景色,最后调用 Label 控件的 pack() 方法将其添加到窗口中,并通过调用 top.mainloop() 方法进入主事件循环,以等待用户的交互操作。当用户关闭窗口或退出程序时,主事件循环结束,程序退出。
相关问题
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
好的,以下是根据您提供的代码实现在顶层窗口中显示图片“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()函数,以便单击时打开文件对话框选择图片。
这样,在单击“打开”按钮时,将会弹出文件对话框,选择图片后将在新窗口中显示图片。
import tkinter as tk from tkinter import messagebox import pymysql 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('200x100') label = tk.Label(new_window, text='恭喜您,登录成功!') label.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') 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() 添加“打开”菜单按钮的功能,当单击“打开”按钮时,在第5关的顶层窗口中显示图片“zsy.jpg”
好的,我们可以添加一个菜单栏,其中包含一个“打开”菜单按钮,单击该按钮后可以打开一个文件选择对话框,选择图片文件后在顶层窗口中显示。
以下是修改后的代码:
```python
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=(('JPEG 文件', '*.jpg'), ('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()
```
这段代码中,我们添加了一个名为 `menubar` 的菜单栏,其中包含一个名为 `filemenu` 的菜单,该菜单有一个“打开”命令,单击该命令后会调用 `create_new_window()` 函数来显示图片。在 `create_new_window()` 中,我们使用 `filedialog.askopenfilename()` 函数来打开一个文件选择对话框,选择图片文件后使用 PIL 库来打开和缩放图片,并将其显示在顶层窗口中的一个标签中。
注意,我们要在函数 `create_new_window()` 中先调用 `filedialog.askopenfilename()` 来获取图片路径,然后再通过 PIL 库来打开和操作图片。这是因为 Tkinter 中的 `PhotoImage` 对象不支持直接打开和操作图片文件,需要通过 PIL 或类似的库来实现。
阅读全文