Python GUI 设计(二)—Widget组件详解

本篇是关于Tkinter模块中的组件及其用法的介绍,涉及Label、Button、Entry组件。

1.1 Label标签组件

Label组件是窗口中比较常用的组件,通常用来添加文字和图片,同时还可以定义文字和图片的排列方式,它的语法格式如下。
Label组件的语法
第一个参数表示这个标签建立在哪一个父窗口对象内。下面是Label()方法内其他常用的options参数。
在这里插入图片描述

利用以上参数设计一个文字标签组件,文字内容为“Label标签组件”,标签背景颜色是红色,字体为15号黑体,标签高度为2,宽度为15,演示程序及效果可参考下图。

from tkinter import *  
top = Tk()
top.title("TK")  #窗口标题
top.geometry("200x100")  #窗口长宽
Label(top,text = "Label标签组件",bg="red",font = ("黑体",15),width=15,height=2).pack()
top.mainloop()

在这里插入图片描述

在Label组件中添加图片,需要先创建图像对象PhotoImage(),然后在组件中引用该对象。在Label中直接添加一张“.png”图片,演示程序及效果可参考下图。

from tkinter import *  
top = Tk()
top.title("TK")  #窗口标题

img=PhotoImage(file="C:/Users/Administrator/Desktop/cat.png")
Label(top,image=img).pack()
top.mainloop()

在这里插入图片描述

需要注意的是上述方法添加的图片是“.png”格式的,如果是“.jpg”图片则会出现报错的情况。这是由于PhotoImage()方法不支持“.jpg”格式,需要下载安装第三方模块PIL,安装该模块的命令为“pip install pillow”。

在Label中直接添加一张“.jpg”图片要先在程序中引入PIL库中的Image模块和ImageTk模块,演示程序及效果可参考下图。

from tkinter import *  
from PIL import Image,ImageTk
top = Tk()
top.title("TK")  #窗口标题
image=Image.open("C:/Users/Administrator/Desktop/3.jpg")
img = ImageTk.PhotoImage(image)
Label(top,image=img).pack()
top.mainloop()

在这里插入图片描述

1.2 Button按钮组件

Button按钮也称功能按钮,在窗口组件中可以设计单击按钮时,执行某一个特定的动作,我们可以将按钮视作用户与程序之间沟通的桥梁。它的语法格式如下。
Button组件的语法
第一个参数是父窗口,表示这个按钮建立在哪一个窗口对象内。下面是Button()方法内其他常用的options参数。
在这里插入图片描述
利用以上参数设计一个单击时显示字符串“你好,python!”的功能按钮,按钮底色是红色,宋体字体,按钮宽度为10,高度为1,演示程序及效果可参考下图。Button()方法中command参数可以在单击按钮时,连接到其他函数,当需要传递的函数中有参数的时候,需要利用lambda表达式来使函数传递参数(可参考本篇最后一个程序。)

from tkinter import *  
def show():
  Label(top,text = "你好,python").pack()
top = Tk()
top.title("TK")  #窗口标题
top.geometry("200x100")  #窗口长宽
Button(top,text="确认",bg = "red", font = "宋体",height = 1,width = 10,command=show).pack()
top.mainloop()

在这里插入图片描述

1.3 Entry文本框组件

Entry组件用于单行文本,可以使用它来添加少量文字,如果输入的字符串长度大于文本框,所输入的文字会自动向左隐藏,可以利用箭头光标来移动查看。它的语法格式如下。
Entry组件的语法
第一个参数是父窗口,表示这个Entry文本框建立在哪一个窗口对象内。下面是Entry()方法内其他常用的options参数。
在这里插入图片描述
利用以上参数建立标签,设计一个简单的文本输入框,输入账号和密码,演示程序及效果可参考下图。

from tkinter import *  
top = Tk()
top.geometry("200x100")  #窗口长宽
Label(top,text = "账号").grid(row=0,column=0)
Entry(top).grid(row=0,column=1)
Label(top,text = "密码").grid(row=1,column=0)
Entry(top,show="*").grid(row=1,column=1)
top.mainloop()

在这里插入图片描述

在文本框输入的内容,可以用Entry组件的get()方法获取字符串内容。设计一个文本输入框,输入账号密码,通过点击“确定”按钮,在运行窗口打印出密码。在“确定”按钮中,由于有password_entry这个参数需要传递,因此需要用到Lambda表达式来调用相同的方法。利用Widget组件中有quit方法,执行此方法时Pyhton Shell窗口的程序将结束,演示程序及效果可参考下图。

from tkinter import *  
def show(password_entry):
    password=password_entry.get()  #通过get()方法获取
    print("密码是:",password) #按下按钮后,显示密码
top = Tk()
top.geometry("200x100")  #窗口长宽
Label(top,text = "账号").grid(row=0,column=0)
name = Entry(top)
name.grid(row=0,column=1)
Label(top,text = "密码").grid(row=1,column=0)
password_entry = Entry(top,show="*")
password_entry.grid(row=1,column=1)
Button(top,text="确定",bg="white",command=lambda:show(password_entry)).grid(row=3,column=0)
Button(top,text="退出",bg="white",command=top.quit).grid(row=3,column=1)  #quit()是退出窗口的方法
top.mainloop()

在这里插入图片描述

1.4 Text文本框组件

Entry组件虽然可以添加文字,但是文字在一行中显示,当文字较多时,无法换行显示,而Text多行文本恰好弥补了这一点。它的语法格式如下。

Text(父窗口,options,...)

第一个参数是父窗口,表示这个Text文本框建立在哪一个窗口对象内。下面是Text ()方法内其他常用的options参数。

在这里插入图片描述
利用以上参数建立一个高度为2,宽度为30的Text文字区域,然后输入文字,演示程序及效果可参考下图。

from tkinter import *  
top = Tk()
top.geometry("200x100")  #窗口长宽
Text(top,height=2,width=30).pack()
top.mainloop()

在这里插入图片描述
在Text文本框组件输入的内容,同样也可以利用get()方法来获取字符串内容。
下一篇是还是组件的介绍包括Canvas、MessageBox、Frame等Python GUI 设计(三)—Widget组件详解

猜你喜欢

转载自blog.csdn.net/lyx4949/article/details/123430465