定时任务, 让控件在 delay_ms 毫秒后去调用函数 func , 其中 args 为函数的参数
格式为:
w.after(delay_ms, func=None, *args)
方法返回值为int类型的标识符, 可以使用 .after_cancel() 方法取消定时任务
向控件添加一个事件绑定
格式为:
w.bind(sequence=None, func=None, add=None)
参数 sequence 指的是事件名, func 是回调函数, 当该事件已经绑定到一个回调函数上, 默认情况会使用新函数覆盖老函数, 使 用 add='+' 保留新旧两个
事件格式: <[modifier-]...type[-detail]>
事件名如何表示:
函数格式:
def 函数名(事件参数)
如:
'''
GUI
tkinter tk interface
GUI概念
窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
窗口的布局:
- 绝对布局: place
- 相对布局: pack
- 网格布局: grid
控件:
- 按钮 Button
- 文本框: Label
- 文本输入框: Entry
- 单选框: RadioButton
- 下拉框: Commobbox
控件名(master,options)
'''
import string
import tkinter
from tkinter import ttk
import random as r
window = tkinter.Tk()
window.title("随机密码生成器")
label = tkinter.Label(window, text='密码:')
label.grid(row=0, column=0)
entry_text = tkinter.StringVar()
entry = tkinter.Entry(window, textvariable=entry_text)
entry.grid(row=0, column=1)
def gen_poor_password(password_len):
list = r.choices(string.ascii_lowercase, k=password_len)
return ''.join(list)
def medium_password(len):
password = r.choices(string.ascii_lowercase + string.ascii_uppercase + string.digits, k=len)
return ''.join(password)
'''
entry设置文本的两种方法:
- entry.delete(0, tkinter.END)/entry.insert(0, password)
- 控制变量: entry_text.set(password)
'''
def
完善密码生成器(强密码)
规则如下:
弱密码: 小写字母
中密码: 大写+小写+数字 (位置都随机/随机/可以是0个)
强密码: 特殊符号+大写+小写+数字, 特殊符号放前面->大写->小写->数字
(直接位数固定13位, 下拉框固定, 特殊符号(带空格)4, 大写3,小写3,数字3, 特殊符号,大写,小写,数字是有序的)
tkinter 中的控制变量,可以在不同的部件中共用,使用 set (value) 方法设置变量值后,所有相关的部件会在屏幕更新時自动更 新;控制变量的建立必须使用以下三种类别之一:
控制变量的方法
文本框组件常用的方法:
delete(first, last=None)
从组件中删除字符, 从 first 索引位置开始, 到 last (不包含)索引位置结束. 如果 last 参数没有的话, 只删除 first 一个字符, 例如: text.delete(10); text.delte(10,20); text.delete(0,tkinter.END);text.delete(0, 'end')
insert(index, s)
在 index 索引位置前插入字符串s, text.insert(0,"sss")
text.get()
entry的索引有以下几种表示方式:
该模块实现了各种分布的伪随机数生成器。
几乎所有模块函数都依赖于基本函数 random() ,它在半开放区间 [0.0,1.0) 内均匀生成随机浮点数。
import random
常用的方法如下:
random.randrange([start], stop[, step])
,从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2)
,结果相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。
random.choice
从序列中获取一个随机元素。其函数原型为:random.choice(sequence)
。参数sequence表示一个有序 类型。这里要说明 一下:sequ
单选按钮控件;显示一个单选的按钮状态
单选按钮控件仅允许用户选择单一的选项值,各个选项值之间是互斥的关系,因此只有一个选项可以被用户选择。
Radiobutton 控件通常都是成组出现的,所有控件都使用相同的变量。
语法格式如下:
radio=tkinter.Radiobutton(master, options...)
例如:
var_radio = tkinter.IntVar()
radio = tkinter.Radiobutton(window, text="弱", disabledforeground='red', value=1, variable=var_radio)
radio.grid(row=1, column=2)
radio = tkinter.Radiobutton(window, text="中", disabledforeground='red', value=2, variable=var_radio)
radio.grid(row=1, column=3)
radio = tkinter.Radiobutton(window, text="强", disabledforeground='red', value=3, variable=var_radio)
radio.grid(row=1, column=4)
Radiobutton 属性列表,如下所示:
\n
换行注意:
radiobutton成组出现时: variable参数一定要是同一个, 并且value参数不能相同
Combobox 控件,也就是下拉菜单控件(或称复合框),该控件是列表控件的改进版,具有更加灵活的界面,因此其应
'''
GUI
tkinter tk interface
GUI概念
窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
窗口的布局:
- 绝对布局: place
- 相对布局: pack
- 网格布局: grid
控件:
- 按钮 Button
- 文本框: Label
- 文本输入框: Entry
- 单选框: RadioButton
- 下拉框: Commobbox
控件名(master,options)
'''
import tkinter
from tkinter import ttk
window = tkinter.Tk()
window.title("随机密码生成器")
label = tkinter.Label(window, text='密码:')
label.grid(row=0, column=0)
entry = tkinter.Entry(window)
entry.grid(row=0, column=1)
def fun01():
print("button clicked")
entry.insert(0, "button clicked")
print(var_radio.get())
btn = tkinter.Button(window, text="生成", command=fun01, cursor="plus")
btn.grid(row=0, column=2, columnspan=3, sticky=tkinter.W + tkinter.N)
# RadioButton
# 多选框
# image
# 参数: 主控件, options
# pad 填充
# text: text静态文本, 程序运行时不改变的
# textvariable: 是动态文本, 程序运行时能动态改变的
# radiobutton成组出现时: variable参数一定要是同一个, 并且value参数不能相同
var_radio = tkinter.IntVar()
radio = tkinter.Radiobutton(window, t
'''
GUI
tkinter tk interface
GUI概念
窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
窗口的布局:
- 绝对布局: place
- 相对布局: pack
- 网格布局: grid
控件:
- 按钮 Button
- 文本框: Label
- 文本输入框: Entry
- 单选框: RadioButton
- 下拉框: Commobbox
控件名(master,options)
'''
import tkinter
window = tkinter.Tk()
window.title("随机密码生成器")
label = tkinter.Label(window, text='密码:')
label.grid(row=0, column=0)
entry = tkinter.Entry(window)
entry.grid(row=0, column=1)
def fun01():
print("button clicked")
entry.insert(0, "button clicked")
btn = tkinter.Button(window, text="生成", command=fun01)
btn.grid(row=0, column=5)
window.mainloop() # 主循环, 进入事件系统
将课堂上的代码完善, 能显示上图中红框中的组件(label/entry/button三个组件), 确保代码能正常运行
Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。
Graphical User Interface 图形用户接口
tkinter是python 自带的, 可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个 程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。
在GUI编程中,顶层的根窗口对象包含组成GUI应用的所有小窗口对象,它们可以是文字标签、按钮、列表框等,这些独立的 GUI组件称为控件。当创建一个顶层窗口时,指的是需要一个地方来摆放所有的控件。
在Python中,一般用如下语句创建根窗口:
import tkinter
top=tkinter.Tk()
或者
from tkinter import *
top=Tk()
tkinter.Tk() 返回的对象通常称为根窗口
顶层窗口是那些在应用中独立显示的部分,GUI程序中可以有多个顶层窗口,但只能有一个根窗口。
件可以独立存在,也可以作为容器存在。如果一个控件包含其他控件,就可以称其为其他控件的父控件。若一个控件被其他控件 包含,则称其为那个控件的子控件,而父控件就称为包围它的容器控件。
控件有一些相关的行为,如按下按钮、将文本写入文本框等,这些行为称为事件,而GUI对这类事件的响应称为回调。
事件包括按下按钮及释放、鼠标移动、按回车键等。一个GUI应用从开始到结束就是通过整套事件体系来驱动的,这种方式称为 事件驱动处理。
tkinter有3种布局管理器,即Placer、Packer和Grid。
Placer是最原始的布局管理器,Placer的做法非常直接,只需提供控件的 大小和摆放位 置,然后管理器就会自动将其摆放好。但 这有一个问题,就是你必须对所有控件进行这些操作,这会加重编程开发者的负担,因为这些操作本应该是自动完成的
btn.place(x=100,y=100)
Packer
x,y=12,5
if x % y==0:
z=x/y
print(x,"/",y,"=",z)
else:
z=y*x
print(x,"*",y,"=",z)
程序段执行后,输出的结果为?( )
A、x/y=2.4
B、x*y=60
C、12/5=2.4
D、12*5=60
A、t=(1,2,'信息')
B、t=(1)
C、t=('信息',)
D、t='音乐','体育','美术'
A、a.remove()
B、a.pop()
C、a.clear()
D、del a
A、a[-7:-2:-2]
B、a[2:7:2]
C、a[3:7:2]
D、a[2:7:-2]
alist=['cat','bat','cat','hat','cat']
,执行下列代码,输出的结果是?( )
alist.remove('cat')
print(alist)
A、['cat','bat','cat','hat','cat']
B、['bat','cat','hat','cat']
C、['bat','hat']
D、['cat','bat','cat','hat']
A、3
B、4
C、5
D、6
tup=(1,2,3,4,5)
执行的操作非法的是?( )
A、len(tup)
B、max(tup)
C、min(tup)
D、tup[1] = 6
A、map(int,L)
B、list(map(i