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

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

第一个例子

前面我们说过,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()

运行结果如下:

点击按钮:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值