python学习实验报告(第九周)

本文介绍了两个使用Python tkinter库实现的图形界面应用:一是用户登录界面,通过读取文本文件验证用户名和密码;二是猜数字游戏,用户在100以内猜测系统生成的数字,根据提示判断猜大了还是猜小了。这两个实例展示了tkinter在GUI编程中的基本用法和事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的

1. 理解tkinter标准库的用法。

2. 熟悉创建窗体和组件的方法。

3. 熟悉tkinter组件属性及其作用和设置方法。

4. 了解如何为tkinter组件绑定事件处理方法。

二、实验内容及结果

1. Tkinter实现用户登录界面。建立一个文本文件users.txt,其中每一行存储一个用户的名字和密码,二者之间使用冒号分割,例如“admin:123456”。用户输入名字和密码后,单击“Login”按钮,根据文件users.txt中存储的信息判断用户输入是否正确。如果不正确就提示“用户名或者密码不正确”,如果正确就提示“登录成功”。请将界面中的文字全部改为中文。

图片描述

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()

图片描述

图片描述

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()

图片描述

图片描述

图片描述

图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值