这个项目有三个文件,分别是“morning.txt"“afternoon.txt”“main.py”。
下面,我来开始仔细讲解该如何制作。

首先,设置文件。

新建“morning.txt"“afternoon.txt”。分别输入以下内容。
morning.txt

周一:语文/数学/语文/英语
周二:数学/英语/信息/语文
周三:数学/语文/美术/数学
周四:语文/音乐/数学/美术
周五:语文/数学/音乐/英语

afternoon.txt

周一:校会/劳技/科学
周三:语文/天世/体育
周四:科学/发探/体育
周五:体育/校本/习字

当然,你也可以用字典的方式来储存信息。关于字典的定义,我就不讲了。

下面,我们来编写程序。

首先,我来说一下这个程序需要什么代码库。
tkinter,用来创建窗口
tkinter.ttk,用Combobox
tkinter.messagebox,用来显示信息

# coding-utf-8from tkinter import*
from tkinter.messagebox import*
from tkinter.ttk import*

然后,我们定义两个空字典,用来储存上下午的课程。

ke={}xia={}

下面,我们来创建GUI窗口,使用Tk()函数,并且插入两个Combobox和一个按钮。

root=Tk()
root.title('课表查询')
root.geometry('330x50+300+300')var=StringVar(root)
var.set('请选择上下午')
cb=Combobox(root,textvariable=var)
cb['value']=('上午','下午')
cb.grid(row=0,column=0)var1=StringVar(root)
var1.set('请选择周几')
cbb=Combobox(root,textvariable=var1)
cbb['value']=('周一','周二','周三','周四','周五')
cbb.grid(row=0,column=1)Button(root,text='确定').grid(row=1,column=0,columnspan=2)root.mainloop()

运行程序的效果:

同时单击三角也可以看到菜单。

下面是重头戏!(如果用字典来储存信息请跳过)

def write():with open('D:\project\课程表查询\morning.txt',encoding='UTF-8') as file:for line in file:line.rstrip('\n')zhou,xue=line.split(':')ke[zhou]=xue

地二行的encoding='UTF-8’代表文本编码是utf-8,这个文本编码支持中文字。如果去掉这行代码,就会报错。

第三行使用for循环来处理文件,
第四行剔除换行符,
第五行将zhou变量设为字符‘:’的前面,xue变量设为字符‘:’的后面(注意:Python对字符是非常严格的,所以文本文档里使用中文输入冒号,在程序里也要输入中文冒号)。
第六行将ke字典的键设为zhou,值设为xue。

照这样的方式来设置第二个文本文件,不过要说一些东西。

    ...with open('D:\project\课程表查询\/afternoon.txt',encoding='UTF-8') as file:for line in file:line.rstrip('\n')zhou2,xue2=line.split(':')xia[zhou2]=xue2

这里有一行转义字符,这是怎么回事?我拿vscode来举例,当你输入\a时文字成蓝色,这表示这是一个可以在Python里被解释的语言,所以要转义,来让Python不取管这个代码的意思,是知道是一个字符。

还有一点就是字典要改。

下面是查找课程的代码。

def search():try:if cb.get()=='上午':if cbb.get() in ke:showinfo('提示','{}{}的课表是:{}'.format(cbb.get(),cb.get(),ke[cbb.get()]))else:if cbb.get() in xia:showinfo('提示','{}{}的课表是:{}'.format(cbb.get(),cb.get(),xia[cbb.get()]))else:showwarning('提示','这一天下午无课程!')except KeyError:showwarning('提示','这一s天下午无课程!')

因为周二下午的课程不在索引里,会触发KeyError,所以用try/except语句。

下面是完整的代码。

# coding-utf-8from tkinter import*
from tkinter.messagebox import*
from tkinter.ttk import*ke={}xia={}def write():with open('D:\爱学习也爱玩耍的大老虎\Let us code!\Python\project\课程表查询\morning.txt',encoding='UTF-8') as file:for line in file:line.rstrip('\n')zhou,xue=line.split(':')ke[zhou]=xuewith open('D:\爱学习也爱玩耍的大老虎\Let us code!\Python\project\课程表查询\/afternoon.txt',encoding='UTF-8') as file:for line in file:line.rstrip('\n')zhou2,xue2=line.split(':')xia[zhou2]=xue2def search():try:if cb.get()=='上午':if cbb.get() in ke:showinfo('提示','{}{}的课表是:{}'.format(cbb.get(),cb.get(),ke[cbb.get()]))else:if cbb.get() in xia:showinfo('提示','{}{}的课表是:{}'.format(cbb.get(),cb.get(),xia[cbb.get()]))else:showwarning('提示','这一天下午无课程!')except KeyError:showwarning('提示','这一s天下午无课程!')write()
root=Tk()
root.title('课表查询')
root.geometry('330x50+300+300')var=StringVar(root)
var.set('请选择上下午')
cb=Combobox(root,textvariable=var)
cb['value']=('上午','下午')
cb.grid(row=0,column=0)var1=StringVar(root)
var1.set('请选择周几')
cbb=Combobox(root,textvariable=var1)
cbb['value']=('周一','周二','周三','周四','周五')
cbb.grid(row=0,column=1)Button(root,text='确定',command=search).grid(row=1,column=0,columnspan=2)root.mainloop()

Python tkinter实战:课程表查询相关推荐

  1. [简单的python爬虫实战] ,查询亚马逊产品的关键词排名 [日本站]

    今天回顾了一下定向爬虫的编写,想起以前的工作需求,有感而发写了一个简单的爬虫 爬虫功能: 这个爬虫脚本是根据之前在做亚马逊销售的时候的工作需要,从而编写的代码.用以检查产品的关键词排名,从而判断是否需 ...

  2. python tkinter+ socket 实现 域名查询

    python tkinter + socket实现 ip查询 题目 请设计并实现一款IP地址查询程序.程序根据用户输入的域名,可以查询该域名主机的IP地址. 要求:正确时,给出主机的IP地址.使用so ...

  3. python tkinter获取屏幕大小_Python GUI编程|使用Tkinter制作快递查询软件

    GUI(图形用户界面)想必大家都不陌生,简单来说就是将代码变成可以交互式操作的界面.在Python中就提供了多个图形开发界面的库,比如Tkinter.wxPython.Jython等,本文将使用Tki ...

  4. 基于Python/Tkinter的RGB颜色查询器

    这是基于Python/Tkinter的16位RGB颜色查询器,因为之前在做WEB前端设计配色方案的时候,需要了解色值,每次用网页查询颜色对应的RGB值和HEX值,很不方便,所以就想写个单机程序,原本是 ...

  5. python语言实战-Python实战-从菜鸟到大牛的进阶之路 pdf完整版

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,现在它已经成为最受欢迎的程序设计语言之一.本专题收录了Python编程实战教程,分享给大家. 适用人群:Python 进阶学习者.W ...

  6. python爬虫项目-32个Python爬虫实战项目,满足你的项目慌

    原标题:32个Python爬虫实战项目,满足你的项目慌 爬虫项目名称及简介 一些项目名称涉及企业名词,小编用拼写代替 1.[WechatSogou]- weixin公众号爬虫.基于weixin公众号爬 ...

  7. selenium2 python自动化测试实战(回归测试)

    selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...

  8. Python爬虫实战之(五)| 模拟登录wechat

    作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一 ...

  9. Python爬虫实战之(五)| 模拟登录wechat 1

    作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一 ...

最新文章

  1. 关于使用css3属性:transform固定菜单位置,在滑动页面时菜单闪现抖动的问题
  2. 网络推广——网络推广专员如何提升企业网站转化率?
  3. 第九章 Oracle结构及数据库表与开发语言的对应关系、Oracle数据类型char与varchar
  4. awk多分隔符功能及wc命令案列及企业级应用
  5. android nv21图片格式,Android -- 将NV21图像保存成JPEG
  6. Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程
  7. 虚拟化基础架构Windows 2008篇之2-域用户与域用户组管理
  8. 1050. 螺旋矩阵(25)-PAT乙级真题
  9. 797. 差分(有图解)
  10. 嵌入式系统——指令操作扩展
  11. mysql 二次方函数_MySQL SQRT函数:求二次方根
  12. 互联网摸鱼日报(2022-10-28)
  13. ASPCMS调用分类名称及链接
  14. 开发一个APP要多少钱?
  15. 双馈风机并网simulink模型
  16. 台式计算机怎么进入bios,小编告诉大家hp台式机怎么进bios
  17. Formal Verification (二) FPV、APPs
  18. 思科路由器无法访问互联网怎么操作?
  19. vue面试核心,双向数据绑定,数据代理,数据劫持,发布订阅,数据编译,看这个demo就够了
  20. 上山打老虎个人论坛源码

热门文章

  1. J9数字货币论:元宇宙未来如何影响我们的生活?
  2. [转]GIS火爆了??
  3. python unittest TestCase间共享数据(全局变量的使用)
  4. 新浪微博模拟登陆 java
  5. 微信小程序和网站显示灰色方法
  6. CIO40: IT人之流程与管理
  7. LeetCode:1162. 地图分析+模板链接
  8. javaFX学习之 菜单(Menu)
  9. qt程序 html安装,qt webassembly emscripten build 环境搭建
  10. python reshape_Numpy之reshape()使用详解