2022-04-10 08:23:05    16    0    0

控件通用方法

after方法

定时任务, 让控件在 delay_ms 毫秒后去调用函数 func , 其中 args 为函数的参数

格式为:

  1. w.after(delay_ms, func=None, *args)

方法返回值为int类型的标识符, 可以使用 .after_cancel() 方法取消定时任务

bind方法

向控件添加一个事件绑定

格式为:

  1. w.bind(sequence=None, func=None, add=None)

参数 sequence 指的是事件名, func 是回调函数, 当该事件已经绑定到一个回调函数上, 默认情况会使用新函数覆盖老函数, 使 用 add='+' 保留新旧两个

事件格式: <[modifier-]...type[-detail]>

title

事件名如何表示:

  • 鼠标事件:
    Button: 代表所有鼠标键的点击
    Button-1: 代表鼠标左键的点击
    Button-2/3: 代表鼠标右键的点击
    ButtonPress: 鼠标按下事件
    ButtonPress-1: 代表鼠标左键的点击
    ButtonPress-2/3: 代表鼠标右键的点击
    ButtonRelease: 鼠标抬起事件
    ButtonRelease-1: 代表鼠标左键的点击
    ButtonRelease-2/3: 代表鼠标右键的点击
  • 按键事件:
    KeyPress: 按键按下
    KeyRelease: 按键抬起
    KeyPress-a: 按字母按下事件, 区分大小写
    Control-Shift-KeyPress-H: 组合键
    KeyPress-Return: 回车键Enter

函数格式:

  1. def 函数名(事件参数)

如:

2022-03-27 08:02:37    9    0    0
  1. '''
  2. GUI
  3. tkinter tk interface
  4. GUI概念
  5. 窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
  6. 控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
  7. 事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
  8. 窗口的布局:
  9. - 绝对布局: place
  10. - 相对布局: pack
  11. - 网格布局: grid
  12. 控件:
  13. - 按钮 Button
  14. - 文本框: Label
  15. - 文本输入框: Entry
  16. - 单选框: RadioButton
  17. - 下拉框: Commobbox
  18. 控件名(master,options)
  19. '''
  20. import string
  21. import tkinter
  22. from tkinter import ttk
  23. import random as r
  24. window = tkinter.Tk()
  25. window.title("随机密码生成器")
  26. label = tkinter.Label(window, text='密码:')
  27. label.grid(row=0, column=0)
  28. entry_text = tkinter.StringVar()
  29. entry = tkinter.Entry(window, textvariable=entry_text)
  30. entry.grid(row=0, column=1)
  31. def gen_poor_password(password_len):
  32. list = r.choices(string.ascii_lowercase, k=password_len)
  33. return ''.join(list)
  34. def medium_password(len):
  35. password = r.choices(string.ascii_lowercase + string.ascii_uppercase + string.digits, k=len)
  36. return ''.join(password)
  37. '''
  38. entry设置文本的两种方法:
  39. - entry.delete(0, tkinter.END)/entry.insert(0, password)
  40. - 控制变量: entry_text.set(password)
  41. '''
  42. def
2022-03-27 08:03:20    12    0    0

题目

完善密码生成器(强密码)

规则如下:

  1. 弱密码: 小写字母
  2. 中密码: 大写+小写+数字 (位置都随机/随机/可以是0个)
  3. 强密码: 特殊符号+大写+小写+数字, 特殊符号放前面->大写->小写->数字
  4. (直接位数固定13位, 下拉框固定, 特殊符号(带空格)4, 大写3,小写3,数字3, 特殊符号,大写,小写,数字是有序的)
2022-03-27 08:04:44    16    0    0

tkinter知识

控制变量

tkinter 中的控制变量,可以在不同的部件中共用,使用 set (value) 方法设置变量值后,所有相关的部件会在屏幕更新時自动更 新;控制变量的建立必须使用以下三种类别之一:

title

控制变量的方法

title

Entry文本输入控件

文本框组件常用的方法:

  • 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")
  • get() 将组建当前的内容作为字符串返回, text.get()

entry的索引有以下几种表示方式:

  • 普通的python索引表示法: 从0开始的整数
  • 常量 tkinter.END 代表文本框文本的最后位置
  • 常量 tkinter.INSERT 代表当前光标的位置
  • 常量 tkinter.ANCHOR 代表当前选中位置的第一个字符前(有选中)

Random模块

该模块实现了各种分布的伪随机数生成器。

几乎所有模块函数都依赖于基本函数 random() ,它在半开放区间 [0.0,1.0) 内均匀生成随机浮点数。

  1. 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

2022-03-20 08:16:29    16    0    0

tkinter组件

Radiobutton单选框

单选按钮控件;显示一个单选的按钮状态

单选按钮控件仅允许用户选择单一的选项值,各个选项值之间是互斥的关系,因此只有一个选项可以被用户选择。

Radiobutton 控件通常都是成组出现的,所有控件都使用相同的变量。

语法格式如下:

  1. radio=tkinter.Radiobutton(master, options...)

例如:

  1. var_radio = tkinter.IntVar()
  2. radio = tkinter.Radiobutton(window, text="弱", disabledforeground='red', value=1, variable=var_radio)
  3. radio.grid(row=1, column=2)
  4. radio = tkinter.Radiobutton(window, text="中", disabledforeground='red', value=2, variable=var_radio)
  5. radio.grid(row=1, column=3)
  6. radio = tkinter.Radiobutton(window, text="强", disabledforeground='red', value=3, variable=var_radio)
  7. radio.grid(row=1, column=4)

Radiobutton 属性列表,如下所示:

  • text 单选框要显示的文本, 多行使用\n换行
  • textvariable 如果想要在程序运行时改变文本的值, 使用该选项替换text
  • height 高度, 指的是文本的行数
  • width 宽度
  • variable 存储单选框值的变量, 当单选框状态改变是,可以通过该变量获取选中单选框的值
  • value 单选框的值, 在单选框组里面唯一

注意:

radiobutton成组出现时: variable参数一定要是同一个, 并且value参数不能相同

Combobox组合框控件

Combobox 控件,也就是下拉菜单控件(或称复合框),该控件是列表控件的改进版,具有更加灵活的界面,因此其应

2022-03-20 08:17:21    13    0    0
  1. '''
  2. GUI
  3. tkinter tk interface
  4. GUI概念
  5. 窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
  6. 控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
  7. 事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
  8. 窗口的布局:
  9. - 绝对布局: place
  10. - 相对布局: pack
  11. - 网格布局: grid
  12. 控件:
  13. - 按钮 Button
  14. - 文本框: Label
  15. - 文本输入框: Entry
  16. - 单选框: RadioButton
  17. - 下拉框: Commobbox
  18. 控件名(master,options)
  19. '''
  20. import tkinter
  21. from tkinter import ttk
  22. window = tkinter.Tk()
  23. window.title("随机密码生成器")
  24. label = tkinter.Label(window, text='密码:')
  25. label.grid(row=0, column=0)
  26. entry = tkinter.Entry(window)
  27. entry.grid(row=0, column=1)
  28. def fun01():
  29. print("button clicked")
  30. entry.insert(0, "button clicked")
  31. print(var_radio.get())
  32. btn = tkinter.Button(window, text="生成", command=fun01, cursor="plus")
  33. btn.grid(row=0, column=2, columnspan=3, sticky=tkinter.W + tkinter.N)
  34. # RadioButton
  35. # 多选框
  36. # image
  37. # 参数: 主控件, options
  38. # pad 填充
  39. # text: text静态文本, 程序运行时不改变的
  40. # textvariable: 是动态文本, 程序运行时能动态改变的
  41. # radiobutton成组出现时: variable参数一定要是同一个, 并且value参数不能相同
  42. var_radio = tkinter.IntVar()
  43. radio = tkinter.Radiobutton(window, t
2022-03-13 08:33:04    9    0    0
  1. '''
  2. GUI
  3. tkinter tk interface
  4. GUI概念
  5. 窗口: 是所有组件的容器, 一个GUI程序只能有一个窗口
  6. 控件: 窗口里面盛放的小组件, 比如按钮/文本框.. 简单控件/组合控件
  7. 事件: 是窗口和用户之间的交互, 通过事件窗口可以响应外部的操作
  8. 窗口的布局:
  9. - 绝对布局: place
  10. - 相对布局: pack
  11. - 网格布局: grid
  12. 控件:
  13. - 按钮 Button
  14. - 文本框: Label
  15. - 文本输入框: Entry
  16. - 单选框: RadioButton
  17. - 下拉框: Commobbox
  18. 控件名(master,options)
  19. '''
  20. import tkinter
  21. window = tkinter.Tk()
  22. window.title("随机密码生成器")
  23. label = tkinter.Label(window, text='密码:')
  24. label.grid(row=0, column=0)
  25. entry = tkinter.Entry(window)
  26. entry.grid(row=0, column=1)
  27. def fun01():
  28. print("button clicked")
  29. entry.insert(0, "button clicked")
  30. btn = tkinter.Button(window, text="生成", command=fun01)
  31. btn.grid(row=0, column=5)
  32. window.mainloop() # 主循环, 进入事件系统
2022-03-13 08:33:39    12    0    0

题目

title

将课堂上的代码完善, 能显示上图中红框中的组件(label/entry/button三个组件), 确保代码能正常运行

2022-03-13 08:22:51    46    0    0

Tkinter是什么

Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。

Graphical User Interface 图形用户接口

tkinter是python 自带的, 可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个 程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。

概念介绍

窗口和控件

在GUI编程中,顶层的根窗口对象包含组成GUI应用的所有小窗口对象,它们可以是文字标签、按钮、列表框等,这些独立的 GUI组件称为控件。当创建一个顶层窗口时,指的是需要一个地方来摆放所有的控件。

在Python中,一般用如下语句创建根窗口:

  1. import tkinter
  2. top=tkinter.Tk()

或者

  1. from tkinter import *
  2. top=Tk()

tkinter.Tk() 返回的对象通常称为根窗口

顶层窗口是那些在应用中独立显示的部分,GUI程序中可以有多个顶层窗口,但只能有一个根窗口。

件可以独立存在,也可以作为容器存在。如果一个控件包含其他控件,就可以称其为其他控件的父控件。若一个控件被其他控件 包含,则称其为那个控件的子控件,而父控件就称为包围它的容器控件。

控件有一些相关的行为,如按下按钮、将文本写入文本框等,这些行为称为事件,而GUI对这类事件的响应称为回调。

事件驱动处理

事件包括按下按钮及释放、鼠标移动、按回车键等。一个GUI应用从开始到结束就是通过整套事件体系来驱动的,这种方式称为 事件驱动处理。

布局管理器

tkinter有3种布局管理器,即Placer、Packer和Grid。

Placer是最原始的布局管理器,Placer的做法非常直接,只需提供控件的 大小和摆放位 置,然后管理器就会自动将其摆放好。但 这有一个问题,就是你必须对所有控件进行这些操作,这会加重编程开发者的负担,因为这些操作本应该是自动完成的

  1. btn.place(x=100,y=100)

Packer

2022-01-22 14:30:23    52    0    0

选择题

  • 1、有如下Python程序段:
  1. x,y=12,5
  2. if x % y==0:
  3. z=x/y
  4. print(x,"/",y,"=",z)
  5. else:
  6. z=y*x
  7. print(x,"*",y,"=",z)

程序段执行后,输出的结果为?( )

  1. Ax/y=2.4
  2. Bx*y=60
  3. C12/5=2.4
  4. D12*5=60
  • 2、下列创建元组的方法中不正确的是?( )
  1. At=(1,2,'信息'
  2. Bt=(1)
  3. Ct=('信息',)
  4. Dt='音乐','体育','美术'
  • 3、已知存在字典a中有多个键值对,以下指令可以清空字典并保留变量的是?( )
  1. Aa.remove()
  2. Ba.pop()
  3. Ca.clear()
  4. Ddel a
  • 4、列表a=[1,2,3,4,5,6,7,8,9],对列表进行切片操作,要想得到[3,5,7],以下切片正确的是?( )
  1. Aa[-7:-2:-2]
  2. Ba[2:7:2]
  3. Ca[3:7:2]
  4. Da[2:7:-2]
  • 5、alist=['cat','bat','cat','hat','cat'],执行下列代码,输出的结果是?( )
  1. alist.remove('cat')
  2. print(alist)
  1. A、['cat','bat','cat','hat','cat']
  2. B、['bat','cat','hat','cat']
  3. C、['bat','hat']
  4. D、['cat','bat','cat','hat']
  • 6、对于字典dic={1:2,'3':'d','sex':1,4:{'No':1,'name':'Mike'}},len(dic)的值是?( )
  1. A3
  2. B4
  3. C5
  4. D6
  • 7、对于元组tup=(1,2,3,4,5)执行的操作非法的是?( )
  1. Alen(tup)
  2. Bmax(tup)
  3. Cmin(tup)
  4. Dtup[1] = 6
  • 8、使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表L=['1','3','5','7','9']转换为列表[1,3,5,7,9]的函数写法为?( )
  1. Amap(int,L)
  2. Blist(map(i
4/5