今天主要学习图形用户界面,更多的还是要我们自己去实际操作,课仿佛上了一半就完了,分享一下课程(这里在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课程笔记 (五)的更多相关文章

  1. Python课程笔记(一)

    由于新冠状病毒的爆发,不得不在家里上网课,开课已经两个礼拜了,今天上完Python课后,准备整理一下最近学习Python的笔记. 人生苦短,我用Python 一.Hello World 初学一门新的语 ...

  2. Python学习笔记五

    一. 递归 递归函数: def a (): print ("from b") b() def b(): print("from a ") a() a() 递推和 ...

  3. Python学习笔记五:错误与异常

    一:常见异常与错误 BaseException 所有异常的基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类S ...

  4. python学习笔记(五):装饰器、生成器、内置函数、json

    一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...

  5. Python课程笔记(十)

    不陌生,之前学习一个开源SpringBoot项目,Mysql5.5更换到5.7搞得头疼. 数据库连接的坑之前写的IDEA系列连接会遇到的问题.课程代码 今天上课就主要学习了python如何连接mysq ...

  6. Python课程笔记(九)

    本次课程主要学习了Excel和JSON格式的一些读写操作.课程代码 一.Excel数据读写操作 1.安装模块 pip install xlrd pip install xlwt 网不好可以采用三方库: ...

  7. Python课程笔记(八)

    一些简单的文件操作,学过linux的话理解感觉不会很难.课程代码 一.OS 目录方法 这个模块提供了一种方便的使用操作系统函数的方法 函数 说明 os.mkdir("path") ...

  8. Python课程笔记(六)

    今天上课补上了上次未学完比较重点的鼠标和键盘事件,同时开始学习运用turtle进行绘图. 本次课程的代码: https://gitee.com/wang_ming_er/python_course_l ...

  9. python学习笔记五 模块下(基础篇)

    shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...

随机推荐

  1. Java优化if-else代码

    前言 开发系统一些状态,比如订单状态:数据库存储是数字或字母,但是需要显示中文或英文,一般用到if-else代码判断,但这种判断可读性比较差,也会影响后期维护,也比较容易出现bug.比如: 假设状态对 ...

  2. SQL:1999基本语法

    SQL:1999基本语法 SELECT [DISTINCT] * | 列名称 [AS]别名,........ FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]| [NATURAL ...

  3. Windows Phone 页面之间参数传递方法

    目前对WP7开发正在研究,对页面之间参数传递进行了一个小总结,有不正确的地方,欢迎大家指正.. WP7编程采用的技术是Silverlight,页面之间参数传递的方式主要有 通过NavigationCo ...

  4. 1004. 最大连续1的个数 III

    1004. 最大连续1的个数 III 给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 . 返回仅包含 1 的最长(连续)子数组的长度. 示例 1: 输入:A = ...

  5. 数据结构逆向分析-Vector

    数据结构逆向分析-Vector 这个应该是家喻户晓了的东西把,如果说C/C++程序员Vector都不用的话,可能就是一个不太好的程序员. Vector就是一个STL封装的动态数组,数组大家都知道是通过 ...

  6. MapReduce原理深入理解(一)

    1.MapReduce概念 1)MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. 2)MapReduce是分布式运行的,由两个阶段组成:Map和R ...

  7. PHP设计模式之命令模式

    命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例.作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际的命令,而厨师是这个命令的执行者.那么,这个模式解决了什么呢?当你要修改 ...

  8. java基础之AQS

    Java开发中,我们的应用程序经常会使用多线程提高程序的运行效率,多线程情况下访问线程共享变量可能会带来并发问题,此时就需要并发锁解决并发问题.Java提供了两种类型的并发控制机制:synchonri ...

  9. Ubuntu怎么开启/关闭防火墙

    在Ubuntu中,使用sudo ufw status命令查看当前防火墙状态. 不活动,是关闭状态. 在Ubuntu中,使用sudo ufw enable命令来开启防火墙. 在Ubuntu中,使用sud ...

  10. vue 主次页面区分

    1.路由设定,增加meta参数 { path: '/', name: 'Home', component: Home, meta: { index: 0, showFooter: true //由这个 ...