Python tkinter实战:课程表查询
这个项目有三个文件,分别是“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实战:课程表查询相关推荐
- [简单的python爬虫实战] ,查询亚马逊产品的关键词排名 [日本站]
今天回顾了一下定向爬虫的编写,想起以前的工作需求,有感而发写了一个简单的爬虫 爬虫功能: 这个爬虫脚本是根据之前在做亚马逊销售的时候的工作需要,从而编写的代码.用以检查产品的关键词排名,从而判断是否需 ...
- python tkinter+ socket 实现 域名查询
python tkinter + socket实现 ip查询 题目 请设计并实现一款IP地址查询程序.程序根据用户输入的域名,可以查询该域名主机的IP地址. 要求:正确时,给出主机的IP地址.使用so ...
- python tkinter获取屏幕大小_Python GUI编程|使用Tkinter制作快递查询软件
GUI(图形用户界面)想必大家都不陌生,简单来说就是将代码变成可以交互式操作的界面.在Python中就提供了多个图形开发界面的库,比如Tkinter.wxPython.Jython等,本文将使用Tki ...
- 基于Python/Tkinter的RGB颜色查询器
这是基于Python/Tkinter的16位RGB颜色查询器,因为之前在做WEB前端设计配色方案的时候,需要了解色值,每次用网页查询颜色对应的RGB值和HEX值,很不方便,所以就想写个单机程序,原本是 ...
- python语言实战-Python实战-从菜鸟到大牛的进阶之路 pdf完整版
Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,现在它已经成为最受欢迎的程序设计语言之一.本专题收录了Python编程实战教程,分享给大家. 适用人群:Python 进阶学习者.W ...
- python爬虫项目-32个Python爬虫实战项目,满足你的项目慌
原标题:32个Python爬虫实战项目,满足你的项目慌 爬虫项目名称及简介 一些项目名称涉及企业名词,小编用拼写代替 1.[WechatSogou]- weixin公众号爬虫.基于weixin公众号爬 ...
- selenium2 python自动化测试实战(回归测试)
selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...
- Python爬虫实战之(五)| 模拟登录wechat
作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一 ...
- Python爬虫实战之(五)| 模拟登录wechat 1
作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一 ...
最新文章
- 关于使用css3属性:transform固定菜单位置,在滑动页面时菜单闪现抖动的问题
- 网络推广——网络推广专员如何提升企业网站转化率?
- 第九章 Oracle结构及数据库表与开发语言的对应关系、Oracle数据类型char与varchar
- awk多分隔符功能及wc命令案列及企业级应用
- android nv21图片格式,Android -- 将NV21图像保存成JPEG
- Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程
- 虚拟化基础架构Windows 2008篇之2-域用户与域用户组管理
- 1050. 螺旋矩阵(25)-PAT乙级真题
- 797. 差分(有图解)
- 嵌入式系统——指令操作扩展
- mysql 二次方函数_MySQL SQRT函数:求二次方根
- 互联网摸鱼日报(2022-10-28)
- ASPCMS调用分类名称及链接
- 开发一个APP要多少钱?
- 双馈风机并网simulink模型
- 台式计算机怎么进入bios,小编告诉大家hp台式机怎么进bios
- Formal Verification (二) FPV、APPs
- 思科路由器无法访问互联网怎么操作?
- vue面试核心,双向数据绑定,数据代理,数据劫持,发布订阅,数据编译,看这个demo就够了
- 上山打老虎个人论坛源码
热门文章
- J9数字货币论:元宇宙未来如何影响我们的生活?
- [转]GIS火爆了??
- python unittest TestCase间共享数据(全局变量的使用)
- 新浪微博模拟登陆 java
- 微信小程序和网站显示灰色方法
- CIO40: IT人之流程与管理
- LeetCode:1162. 地图分析+模板链接
- javaFX学习之 菜单(Menu)
- qt程序 html安装,qt webassembly emscripten build 环境搭建
- python reshape_Numpy之reshape()使用详解