自学内容网 自学内容网

GUI的最终选择:Tkinter

Tkinter是Python默认的GUI库,因此使用时直接导入即可:import tkinter

17.1 Tkinter之初体验

 

代码分析:

tkinter.mainloop()通常是程序的最后一行代码,执行后程序进入主事件循环。

17.2 进阶版本 

将代码封装成类:

运行效果:

代码分析:

 注:修改pack()方法的side参数side参数可以设置为LEFT、RIGHT、TOP和BOTTOM四个方位,默认的设置时side=tkinter.TOP.

还可以设置pack()方法的padx和pady参数自定义按钮的偏移位置。

17.3 Label组件

Lable组件是用于在界面上输出描述的标签。

有时候可能需要将图片和文字分开,例如将图片作为背景,文字显示再图片的上面,只需要设置compound选项即可:

17.4 Button组件

Button组件用于实现一个按钮,它的绝大多数选项与Label组件是一样的。不过Button组件有一个Label组件实现不了的功能,那就是可以接收用户的信息。

Button组件有一个command选项,用于指定一个函数或方向,当用户单击按钮时,Tkinter就会自动调用这个函数或方法了。

17.5 Checkbutton组件

Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮。

 

17.6 Radiobutton组件

Radiobutton组件与Checkbutton组件用法基本一致,唯一不同的是Radiobutton实现的是“单选”的效果。

要实现这种互斥的效果,同一组内的所有Radiobutton只能共享一个variable选项,并且需要设置不同的value选项值:

17.7 LabelFrame组件

LabelFrame组件是Frame框架的进化版,从样式上来看,也就是添加了Label的Frame,但有了它,Checkbutton和Radiobutton的组件分组就变得简单了:

17.8 Entry组件

Entry组件就是平时所说的输入框。输入框是与程序打交道的一个途径,例如程序要求输入账号密码,那么就需要提供两个输入框,用于接收密码的输入框还会用星号将实际输入的内容隐藏起来。

在输入框中用代码添加和删除内容,同样也是使用insert()和delete()方法:

 获取输入框里的内容,可以使用Entry组件的get()方法。

当然也可以将一个Tkinter的变量(通常是StringVar)挂钩到textvariable选项,然后通过变量get()方法获取。

在下面的例子中添加一个按钮,当单击按钮的时候,获取输入框中的内容并打印出来,然后清空输入框:

如果想设计一个密码输入框,即使用星号(*)代替用户输入的内容,只需要设置show选项即可:

另外,Entry组件还支持验证输入内容的合法性。例如输入框架要求输入的是数字,用户输入了字母那就属于“非法"。实现该功能,需要通过设置validate、validatecommand和invalidcommand三个选项。

首先,启用验证的”开关“是validate选项,该选项可以设置的值:

其次是为valideatecommand选项提供一个验证函数,该函数只能返回True或False表示验证结果。一般情况下验证函数只需要知道输入框的内容即可,可以通过Entry组件的get()方法获得该字符串。

最后 ,invalidcommand选项指定的函数只有在validatecommand的返回值为False的时候才被调用。

在下面的例子中,在第一个输入框输入”小鱿鱼“,并通过Tab键将焦点转移到第二个输入框,validatecommand指定的验证函数被触发并返回False,接着invalidcommand被触发:

其实,Tkinter还有一个隐藏功能,即Tkinter为验证函数提供一些额外的选项,

17.12 Text组件 

Text组件用于显示和处理多行文本。当创建一个Text组件时,它里面是没有内容的,为了给其插入内容,可以使用Insert()方法以及INSERT或END索引号:

Text组件不仅支持插入和编辑文本,还支持插入image对象和window组件:

下面将实现单机一下按钮显示一张图片的功能:

17.12.1 Indexes用法

Indexes用来指向text组件中文本的位置,与python的序列索引一样,Text组件索引也对应实际字符的位置。 


原文地址:https://blog.csdn.net/2301_79805249/article/details/144188677

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!