三、tkinter常见控件的特征属性
3.1 文本输入和输出相关控件
3.1.1 标签(Label)和 消息(Message)
文本的输入与输出控件通常包括:标签(Label)、消息(Message)、输入框(Entry)、文本框(Text)。他们除了前述共同属性外,都具有一些特征属性和功能。
- 标签(Label)和 消息(Message):除了单行与多行的不同外,属性和用法基本一致,用于呈现文本信息。值得注意的是:属性text通常用于实例在第一次呈现时的固定文本,而如果需要在程序执行后发生变化,则可以使用下列方法之一实现:1、用控件实例的configure()方法来改变属性text的值,可使显示的文本发生变化;2、先定义一个tkinter的内部类型变量var=StringVar() 的值也可以使显示文本发生变化。
看下面的一个例子:制作一个电子时钟,用root的after()方法每隔1秒time模块以获取系统当前时间,并在标签中显示出来。
方法一:利用configure()方法或config()来实现文本变化。
#coding=utf-8
import tkinter
import datetime
Win = tkinter.Tk()
Win.title("时钟")
Win.geometry("650x60+200+200")
LabelTime = tkinter.Label(Win,text='',fg='blue',font=("黑体",50))
def GetTime():
TimeStr = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
LabelTime.configure(text=TimeStr) # 重新设置标签文本
Win.after(1000, GetTime) # 每隔1s调用函数 gettime 自身获取时间
LabelTime.pack()
GetTime()
Win.mainloop()
方法二:利用textvariable变量属性来实现文本变化
def GetTime2():
TimeStr2.set(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # 获取当前时间
Win.after(1000,GetTime2) # 每隔1s调用函数 gettime 自身获取时间
TimeStr2=tkinter.StringVar()
LabelTime2 = tkinter.Label(Win,textvariable=TimeStr2,fg='blue',font=("黑体",50))
LabelTime2.pack()
GetTime2()
3.1.2 文本框(Text)
文本框的常用方法如下:
方法 | 功能 |
---|---|
delete(起始位置,[终止位置]) | 删除指定区域文本 |
get(起始位置,[终止位置]) | 获取指定区域文本 |
insert(位置,[字符串]…) | 将文本插入到指定位置 |
see(位置) | 在指定位置是否可见文本,返回布尔值 |
index(标记) | 返回标记所在的行和列 |
mark_names() | 返回所有标记名称 |
mark_set(标记,位置) | 返回所有标记名称 |
mark_unset(标记) | 去除标记 |
- 上表位置的取值可为整数,浮点数或END(末尾),例如0.0表示第0列第0行
- 如下一个例子: 每隔1秒获取一次当前日期的时间,并写入文本框中,如下:本例中调用 datetime.now()获取当前日期时间,用insert()方法每次从文本框txt的尾部(END)开始追加文本。
#coding=utf-8
import tkinter
import datetime
def GetTime():
TimeStr = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))+'\n'
txt.insert(tkinter.END,TimeStr)
Win.after(1000,GetTime) # 每隔1s调用函数 gettime 自身获取时间
Win = tkinter.Tk()
Win.geometry('320x240')
txt = tkinter.Text(Win)
txt.pack()
GetTime()
Win.mainloop()
3.1.3 输入框(Entry)
通常作为功能比较单一的接收单行文本输入的控件,虽然也有许多对其中文本进行操作的方法,但通常用的只有取值方法get()和用于删除文本的delete(起始位置,终止位置),例如:清空输入框为delete(0,END)。
3.2 按钮(Button)
主要是为响应鼠标单击事件触发运行程序所设的,故其除控件共有属性外,属性command是最为重要的属性。通常,将按钮要触发执行的程序以函数形式预先定义,然后可以用一下两种方法调用函数。Button按钮的状态有:‘normal’,‘active’,‘disabled’
○ 直接调用函数。参数表达式为“command=函数名”,注意函数名后面不要加括号,也不能传递参数。如下面的command=run1:
○ 利用匿名函数调用函数和传递参数。参数的表达式为“command=lambda”:函数名(参数列表)。例如下面的:“command=lambda:run2(inp1.get(),inp2.get())”。
○ 看下面的例子:1.从两个输入框去的输入文本后转为浮点数值进行加法运算,要求每次单击按钮产生的算是结果以文本的形式追加到文本框中,将原输入框清空。2.按钮方法一不传参数调用函数run1()实现,按钮“方法二”用lambda调用函数run2(x,y)同时传递参数实现。
3.3 单选按钮
3.4 复选框
3.5 列表框 与 组合框
3.5.1 列表框
3.5.2 组合框
3.6 滑块)
3.7 菜单
3.8 子窗体
3.9 模式对话框(Modal)
3.9.1 交互对话框
3.9.2 文件选择对话框
3.9.3 颜色选择对话框
四、事件响应
五、背景图片
六、打开摄像头,显示
一.图形化界面设计的基本理解