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

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

一、实验目的

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

图片描述

图片描述

图片描述

图片描述

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验名称:Python万年历 实验目的:使用Python编写一个可以输出任意年份和月份的日历的程序,并学习Python的基本语法和日期时间模块的使用。 实验步骤: 1. 导入模块 在Python中要使用日期时间模块,需要先导入模块。在程序的开头使用以下代码导入日期时间模块。 ```python import datetime ``` 2. 输入年份和月份 使用`input()`函数让用户输入要查询的年份和月份。 ```python year = int(input("请输入要查询的年份:")) month = int(input("请输入要查询的月份:")) ``` 3. 获取当月第一天的星期几 使用`datetime.date()`函数获取当月第一天的日期,再使用`.weekday()`函数获取星期几。 ```python first_day = datetime.date(year, month, 1) weekday = first_day.weekday() ``` 4. 计算当月天数 使用`datetime.timedelta()`函数计算当月的天数。 ```python if month == 12: days = (datetime.date(year+1, 1, 1) - datetime.timedelta(days=1)).day else: days = (datetime.date(year, month+1, 1) - datetime.timedelta(days=1)).day ``` 5. 输出日历 使用循环输出当月的日历。 ```python print("日 一 二 三 四 五 六") for i in range(weekday): print(" ", end="") for i in range(1, days+1): if i < 10: print("", end=" ") print(i, end=" ") if (i+weekday) % 7 == 0 or i == days: print("") ``` 6. 完整代码 ```python import datetime year = int(input("请输入要查询的年份:")) month = int(input("请输入要查询的月份:")) first_day = datetime.date(year, month, 1) weekday = first_day.weekday() if month == 12: days = (datetime.date(year+1, 1, 1) - datetime.timedelta(days=1)).day else: days = (datetime.date(year, month+1, 1) - datetime.timedelta(days=1)).day print("日 一 二 三 四 五 六") for i in range(weekday): print(" ", end="") for i in range(1, days+1): if i < 10: print("", end=" ") print(i, end=" ") if (i+weekday) % 7 == 0 or i == days: print("") ``` 实验结果: 输入年份和月份,程序会输出该月的完整日历,例如输入2022年3月,输出结果如下: ``` 请输入要查询的年份:2022 请输入要查询的月份:3 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ``` 实验总结: 通过这个实验,我学习Python的基本语法和日期时间模块的使用,并且实现了一个实用的小程序。在编写代码的过程中,我也遇到了一些问题,例如计算当月天数时需要考虑闰年的情况,但是通过查找资料和思考,我最终解决了这些问题。这个实验让我更加深入地了解了Python语言,也为我今后的编程学习打下了基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值