当前位置:   article > 正文

《零基础入门学习Python》第065讲:GUI的终极选择:Tkinter2_python中compound的用法

python中compound的用法

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

第一个例子

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

我们一起动手来实现吧:

  1. import tkinter as tk
  2. root = tk.Tk()
  3. textLabel = tk.Label(root, text = "你所下载的影片含有未成年人限制的内容,请满18周岁后再点击观看!")
  4. textLabel.pack()
  5. photo = tk.PhotoImage(file = '18禁.gif')
  6. imgLabel = tk.Label(root, image = photo)
  7. imgLabel.pack()
  8. root.mainloop()

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

运行结果:

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

  1. ...
  2. textLabel.pack(side ="left" )
  3. ...
  4. imgLabel.pack(side = "right")
  5. ...

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

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

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

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

实现效果如下:

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

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

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

justify 用法:

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

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

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

运行结果如图:

第二个例子

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

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

compound 用法:

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

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

运行结果如下:

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

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

 textvariable  用法

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

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

  1. import tkinter as tk
  2. def callback():
  3. var.set("吹吧你,我才不信呢!")
  4. root = tk.Tk()
  5. frame1 = tk.Frame(root)
  6. frame2 = tk.Frame(root)
  7. var = tk.StringVar()
  8. var.set("你所下载的影片含有未成年人限制的内容,\n请满18周岁后再点击观看!")
  9. textLabel = tk.Label(frame1, textvariable = var, justify = "left")
  10. textLabel.pack(side = "left")
  11. photo = tk.PhotoImage(file = '18禁.gif')
  12. imgLabel = tk.Label(frame1, image = photo)
  13. imgLabel.pack(side = "right")
  14. theButton = tk.Button(frame2, text = "我已满18周岁", command = callback)
  15. theButton.pack()
  16. frame1.pack(padx = 10, pady = 10)
  17. frame2.pack(padx = 10, pady = 10)
  18. root.mainloop()

运行结果如下:

点击按钮:


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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/420599
推荐阅读
相关标签
  

闽ICP备14008679号