一、实验目的
1. 理解tkinter标准库的用法。
2. 熟悉创建窗体和组件的方法。
3. 熟悉tkinter组件属性及其作用和设置方法。
4. 了解如何为tkinter组件绑定事件处理方法。
二、实验内容及结果
1. Tkinter实现用户登录界面。建立一个文本文件users.txt,其中每一行存储一个用户的名字和密码,二者之间使用冒号分割,例如“admin:123456”。用户输入名字和密码后,单击“Login”按钮,根据文件users.txt中存储的信息判断用户输入是否正确。如果不正确就提示“用户名或者密码不正确”,如果正确就提示“登录成功”。请将界面中的文字全部改为中文。
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/e94be9c3c24332b233af33af23f10ba5.png)
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import sys
def login():
with open("users.txt", "r", encoding="utf-8") as f:
for line in f.readlines():
user, pwd = line.strip().replace('\n', '').split(':')
if edit1.get() == user and edit2.get() == pwd:
messagebox.showinfo("成功", "登录成功!")
return
messagebox.showerror("失败", "用户名或者密码不正确!")
return
def end():
sys.exit()
window = Tk()
window.title("登录界面")
label1 = ttk.Label(window, text="用户名:")
edit1 = ttk.Entry(window)
label2 = ttk.Label(window, text="密 码:")
edit2 = ttk.Entry(window, show="*")
button1 = ttk.Button(window, text="Login", command=login)
button2 = ttk.Button(window, text="Exit", command=end)
label1.grid(row=0, column=0, padx=(5, 0), pady=10)
edit1.grid(row=0, column=1, padx=(0, 15), pady=10)
label2.grid(row=1, column=0, padx=(5, 0), pady=10)
edit2.grid(row=1, column=1, padx=(0, 15), pady=10)
button1.grid(row=2, column=0, padx=(10, 0), pady=10)
button2.grid(row=2, column=1, padx=(40, 0), pady=10)
window.mainloop()
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/a6e4e5e70c6dcffac71b2ebc49d3ea89.png)
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/82349d9713d2eeccfde8de2f5324bf90.png)
2. 编写带有图形化界面的猜数字游戏,数字为100以内整数。用户输入猜测值,如果正确,弹出“您猜对了!”消息框,否则提示“猜小了”或者“猜大了”消息框。
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import random
def guess():
if edit.get() == "":
messagebox.showerror("警告", "输入不能为空!")
if not edit.get().isdigit():
messagebox.showerror("警告", "只能输入数字!")
elif eval(edit.get()) < answer:
messagebox.showinfo("错误", "猜小了!")
elif eval(edit.get()) > answer:
messagebox.showinfo("错误", "猜大了!")
elif eval(edit.get()) == answer:
messagebox.showinfo("正确", "您猜对了!")
answer = random.randint(0, 100)
window = Tk()
window.title("猜数游戏")
rule1 = ttk.Label(window, text="游戏规则:系统会随机生成一个100以内的整数,请你猜这个数。")
rule2 = ttk.Label(window, text="如果正确,弹出“您猜对了!”消息框,否则提示“猜小了”或者“猜大了”消息框。")
label = ttk.Label(window, text="请输入你猜测的数字:")
edit = ttk.Entry(window)
button = ttk.Button(window, text="确定", command=guess)
rule1.grid(row=0, columnspan=2)
rule2.grid(row=1, columnspan=2, pady=(0, 10))
label.grid(row=2, column=0, padx=(5, 0), pady=10)
edit.grid(row=2, column=1, padx=(0, 15), pady=10)
button.grid(row=3, column=0, columnspan=2, pady=10)
window.mainloop()
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/da1ad6eca996f9f255b5ff4144068fa5.png)
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/b92051194eec9730c493ec2f9ca11e70.png)
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/8a4ffb33e23a4d77f250a1f7d6765927.png)
![图片描述](https://i-blog.csdnimg.cn/blog_migrate/ce28b3e25e746b4da718086669428643.png)