Python课程笔记 (五)
今天主要学习图形用户界面,更多的还是要我们自己去实际操作,课仿佛上了一半就完了,分享一下课程(这里在SixthClass)的源码:
https://gitee.com/wang_ming_er/python_course_learning
1、图形用户界面设计
常用的模块:
- tkinder,python系统自带
- wxpython,优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的
等等....
今天上课学的主要是tkinder:
控件 | 描述 |
---|---|
Button | 按钮控件;在程序中显示按钮。 |
Canvas | 画布控件;显示图形元素如线条或文本 |
Checkbutton | 多选框控件;用于在程序中提供多项选择框 |
Entry | 输入控件;用于显示简单的文本内容 |
Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件;可以显示文本和位图 |
Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,由于显示菜单项。 |
Menu | 菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message | 消息控件;用来显示多行文本,与label比较类似 |
Radiobutton | 单选按钮控件;显示一个单选的按钮状态 |
Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框。. |
Text | 文本控件;用于显示多行文本 |
Toplevel | 容器控件;用来提供一个单独的对话框,和Frame比较类似 |
Spinbox | 输入控件;与Entry类似,但是可以指定输入范围值 |
PanedWindow | PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 |
LabelFrame | labelframe 是一个简单的容器控件。常用与复杂的窗口布局。 |
tkMessageBox | 用于显示你应用程序的消息框。 |
2、tkinter模块的标签使用
(1)导入tkinter模块
import tkinter
(2)创建一个顶层容器对象
# 定义一个窗体
win = tkinter.TK()
(3)在顶层容器对象中添加组件
# 定义一个窗体
win.title('标签示例')
# 定义窗体的大小400x200像素
win.geometry('400x200')
# 自定义标签label
label = tkinter.Label(win,\
text ='欢迎进入Python世界!',\
font='宋体',\
fg='#FF6A6A'
)
(4)调用pack()方法进行容器的局域布局
label.pack()
(5)进入主事件循环,目的保持窗口一直显示状态
win.mainloop()
3、tkinter模块的按钮使用
窗体中的按钮事件示例:
点击按钮后,弹出一个文本标签
import tkinter
win = tkinter.Tk()
win.title('最简单窗体')
win.geometry('400x200')
t1 = '\n 少壮不努力,长大学程序.'
f1='宋体 16'
def mClick():
label1 = tkinter.Label(win, text=t1, font=f1,fg='#FF6A6A')
label1.pack()
B = tkinter.Button(win, text ="点击我!", command = mClick, font = f1,fg='#FF6A6A')
B.pack()
win.mainloop()
4、三种布局管理方式
(1)Pack 布局管理器
如果使用Pack布局,那么这些组件是依次向后排列,排列方向即可是水平的,也可是垂直的。
(2)Place布局管理器
Place布局就是其他GUI编程中的“绝对布局”,这种布局方式要求程序指定每个组件的绝对位置或相对于其他组件的位置。
(3)Grid布局管理器
Grid是把组件空间分解成一个网格进行维护,即按照行、列的方式排列组件,组件位置由其所在的行号和列号决定:行号相同而列号不同的的几个组件会被依次进行上下排列,列号相同而行号不同的几个组件会被依次进行左右排序。
5、密码验证的小实验
运用上面所学知识,设计一个密码验证的实验
from tkinter import *
win = Tk()
win.geometry('600x400')
win.title('密码验证')
#发送按钮事件
def mClick():
txt = txt2.get()
if(txt == 'abc'):
txt3.set("欢迎进入本系统")
else:
txt3.set("密码错误")
#创建几个组件元素
lab1=Label(win, text="请输入用户名:",font=('华文新魏','16'))
lab2=Label(win, text="请输入密 码:",font=('华文新魏','16'))
txt1=StringVar()
txt2=StringVar()
txt3=StringVar()
txt3.set("请输入用户名和密码")
entry1 = Entry(win,textvariable=txt1, width=16,font=('宋体','16') )
entry2 = Entry(win,textvariable=txt2,width=16,show='*',font=('宋体','16'))
button = Button(win, text='提交', command=mClick,font=('宋体','16'))
lab3=Label(win,textvariable=txt3,relief='ridge',width=30,font=('华文新魏','16'))
#布局设置
lab1.grid(row=0,column=0)
lab2.grid(row=1,column=0)
entry1.grid(row=0,column=1)
entry2.grid(row=1,column=1)
lab3.grid(row=2,column=0,columnspan=2)
button.grid(row=2,column=2)
win.mainloop()
这里在mClick()函数中设置了密码为abc,输入正确密码即可登录,否则将返回密码错误的提示。
Python课程笔记 (五)的更多相关文章
- Python课程笔记(一)
由于新冠状病毒的爆发,不得不在家里上网课,开课已经两个礼拜了,今天上完Python课后,准备整理一下最近学习Python的笔记. 人生苦短,我用Python 一.Hello World 初学一门新的语 ...
- Python学习笔记五
一. 递归 递归函数: def a (): print ("from b") b() def b(): print("from a ") a() a() 递推和 ...
- Python学习笔记五:错误与异常
一:常见异常与错误 BaseException 所有异常的基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类S ...
- python学习笔记(五):装饰器、生成器、内置函数、json
一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...
- Python课程笔记(十)
不陌生,之前学习一个开源SpringBoot项目,Mysql5.5更换到5.7搞得头疼. 数据库连接的坑之前写的IDEA系列连接会遇到的问题.课程代码 今天上课就主要学习了python如何连接mysq ...
- Python课程笔记(九)
本次课程主要学习了Excel和JSON格式的一些读写操作.课程代码 一.Excel数据读写操作 1.安装模块 pip install xlrd pip install xlwt 网不好可以采用三方库: ...
- Python课程笔记(八)
一些简单的文件操作,学过linux的话理解感觉不会很难.课程代码 一.OS 目录方法 这个模块提供了一种方便的使用操作系统函数的方法 函数 说明 os.mkdir("path") ...
- Python课程笔记(六)
今天上课补上了上次未学完比较重点的鼠标和键盘事件,同时开始学习运用turtle进行绘图. 本次课程的代码: https://gitee.com/wang_ming_er/python_course_l ...
- python学习笔记五 模块下(基础篇)
shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...
随机推荐
- jmeter 参数化学习之CSV Data Set Config随机读取一行参数
需要使用到循环控制器,if控制器,CSV Data Set Config,Random Variable 4个组件 如图 先在线程组下面放一个随机数生成器 然后在同一层级设置一个永久的循环控制器,记住 ...
- java设计模式,工厂,代理模式等
javaEE设计模式: 工厂模式:主要分为三种模式: 定义:在基类中定义创建对象的一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟到子类中进行. 为什么要使用工厂模式: (1) 解耦 : ...
- spring入门2-aop和集成测试
1.AOP开发 1.1.简述 作用:面向切面编程:在程序运行期间,在不修改源码的情况下对代码进行增强 优势:减少代码重复,提高开发效率,便于维护 底层:动态代理实现(jdk动态代理,cglib动态代理 ...
- mysql 复合索引 为什么遵循最左原则
1,>mysql :多列索引 https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html 1>,B+树: h ...
- Jenkins持续交付实战演练
jenkins web hook机制 运行jenkins任务触发方式: 主动运行 定时构建 就算代码库没有更新,也会构建. 通过代码库主动触发Jenkins的构建任务 jenkins向外暴露一个触发器 ...
- requestAnimationFrame 切换页面问题
requestAnimationFrame 切换页面时, 之前定时的内容还会继续执行. 所以 要注意处理动画函数内容,否则会出现死循环. 遇到的问题: 我在两个页面都有使用 requestAnimat ...
- iSCSI 服务器搭建
一.简介 SCSI(Small Computer System Interface),小型计算机系统接口,是一种用于计算机及其周边设备之间(硬盘.软驱.光驱.打印机.扫描仪等)系统级接口的独立处理器标 ...
- docker network 参数
一. 格式 docker network COMMAND 二.COMMAND 讲解 2.1 .docker network connect 格式 docker network connect [OPT ...
- 一篇文章告诉你Python接口自动化测试中读取Text,Excel,Yaml文件的方法
前言 不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml.今天讲讲如何读取文件数据 Python也可以读取ini文件,传送门 记住一点:测试的数据是不能写死在代码里面 ...
- Redis之品鉴之旅(二)
2)hash类型,上代码 using (RedisClient client = new RedisClient("127.0.0.1", 6379, "12345&qu ...