《零基础入门学习Python》第065讲:GUI的终极选择:Tkinter2

版权声明:转载请标明出处 https://blog.csdn.net/qq_41556318/article/details/85076375

今天我们通过两个例子来给大家讲讲 tkinter 的两大常用组件:LabelButton

第一个例子

前面我们说过,Label 组件是用于在界面上输出描述性的标签,例如:提示用户“你所下载的影片含有未成年人限制的内容,请满18周岁后再点击观看!”。我们可以使用 Label 的文本输出功能来简单的实现,但是呢,现在大家基本上都拥有了自动过滤掉不和谐字眼的能力了,所以我们有必要在旁边加一个醒目的图片,试图起到一个警示和震慑的作用,如下图所示:

我们一起动手来实现吧:

import tkinter as tk

root = tk.Tk()

textLabel = tk.Label(root, text = "你所下载的影片含有未成年人限制的内容,请满18周岁后再点击观看!")
textLabel.pack()

photo = tk.PhotoImage(file = '18禁.gif')
imgLabel = tk.Label(root, image = photo)
imgLabel.pack()

root.mainloop()

(注意:如果你出现这个错误:couldn't recognize data in image file,那一定是因为你的图片格式为 .jpg格式,请将图片另存为 .gif 格式。)

运行结果:

貌似实现了,但是不太一样,我们要求的是:文字在左边,图片在右边,我们可以这样修改:

...
textLabel.pack(side ="left" )

...
imgLabel.pack(side = "right")

...

效果如下:(和要求的一模一样)

那还有人要提意见了:“你这文字太长,能不能对文字进行换行?”

可以的,因为 tkinter 的字符串 也是支持 转义字符 \n ,表示换行,因此,我们可以这样修改:

textLabel = tk.Label(root, text = "你所下载的影片含有未成年人限制的内容,\n请满18周岁后再点击观看!")

实现效果如下:

又有人有问题了:“文字应该左对齐,然后跟边框保留一定的间距,比较美观吧!”

没问题,这也是可以实现的。

左对齐 :只需要设置 Label 的 justify 选项就可以了,

justify 用法:

1. 定义如何对齐多行文本
2. 使用 "left","right" 或 "center"
3. 注意,文本的位置取决于 anchor 选项
4. 默认值是 "center"

所以,我们这样修改就可以了:

textLabel = tk.Label(root, text = "你所下载的影片含有未成年人限制的内容,\n请满18周岁后再点击观看!",
                     justify = "left",
                     padx = 10)

运行结果如图:

第二个例子

有些时候,你可能不想要图片和文字分开,例如你想把图片作为背景,文字显示在图片上面,那么 Label 组件可以做到吗?

No problem!你只需要简单的设置 compound 选项就可以了。

compound 用法:

1. 控制 Label 中文本和图像的混合模式
2. 默认情况下,如果有指定位图或图片,则不显示文本
3. 如果该选项设置为 "center",文本显示在图像上(文本重叠图像)
4. 如果该选项设置为 "bottom","left","right" 或 "top",那么图像显示在文本的旁边(如 "bottom",则图像在文本的下方)
5. 默认值是 NONE

import tkinter as tk

root = tk.Tk()

photo = tk.PhotoImage(file = 'bg.gif')
theLabel = tk.Label(root,
                    text = """一剪梅·红藕香残玉簟秋\n李清照  宋 \n
红藕香残玉簟秋。轻解罗裳,独上兰舟。\n云中谁寄锦书来,雁字回时,月满西楼。
花自飘零水自流。一种相思,两处闲愁。\n此情无计可消除,才下眉头,却上心头。\n""",
                    justify = "center",
                    image = photo,
                    compound = "center",
                    font = ("华文行楷", 25),
                    fg = "black",
                    )
theLabel.pack(side = "right")

root.mainloop()

运行结果如下:

接下来,我们来讲讲 Botton 组件,Botton 就是按钮,Botton 的绝大多数 选项 都和 Label 是一样的,不过,Bottom 有一个功能,就是可以接收用户的信息,简而言之,Botton 组件就是用于让用户自己说:“干”,然后通过按钮上的文字让用户清楚按下此按钮是干什么用的,相信大家还记得,Botton 组件有一个叫做 command 的选项,用于指定一个函数或者方法,它的作用就是当用户点下这个按钮的时候,tkinter 就会自动调用这个指定的函数或是方法,好了,接下来,我们来修改第一个例子,添加依噶按钮,然后在按钮被按下时,Label 文本发生改变。

OK,想要让文本发生改变,只需要设置一个名为 textvariable 的选项就可以了:

 textvariable  用法

1. Label 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容
2. 如果变量被修改,Label 的文本会自动更新

我还是在例子中给大家讲解:

import tkinter as tk

def callback():
        var.set("吹吧你,我才不信呢!")
        
root = tk.Tk()

frame1 = tk.Frame(root)
frame2 = tk.Frame(root)

var = tk.StringVar()
var.set("你所下载的影片含有未成年人限制的内容,\n请满18周岁后再点击观看!")

textLabel = tk.Label(frame1, textvariable = var, justify = "left")
textLabel.pack(side = "left")

photo = tk.PhotoImage(file = '18禁.gif')
imgLabel = tk.Label(frame1, image = photo)
imgLabel.pack(side = "right")

theButton = tk.Button(frame2, text = "我已满18周岁", command = callback)
theButton.pack()

frame1.pack(padx = 10, pady = 10)
frame2.pack(padx = 10, pady = 10)

root.mainloop()

运行结果如下:

点击按钮:


上面就是我们这节课的内容。相信大家现在已经有一个大问题了,这么多选项,你演示这么多,我怎么全部记得住啊,没关系,不要怕,我这里已经给大家准备好了,

Label 组件用法:Tkinter 组件详解(一):Label

Botton 组件用法:Tkinter 组件详解(二):Button

我这里已经把所有选项的用法以及功能都给大家列举出来了,还举了例子,大家随时查阅即可。

猜你喜欢

转载自blog.csdn.net/qq_41556318/article/details/85076375
今日推荐