GUI的最终选择 Tkinter(二):Label和Button组件

Label组件

Lable组件是用于界面上输出描述的标签,例如提示用户“您下载的电影含有未成年人限制内容,请满18岁以后点击观看!”,先来上结果图:

在来看下它的代码:

from tkinter import *

root = Tk()
#创建一个文本Label对象
textLable = Label(root,\
                  text='您所下载的影片含有未成年限制内容,\n请满18岁再查看')
textLable.pack(side=LEFT)
photo = PhotoImage(file='18.gif')
imglable = Label(root,image=photo)
imglable.pack(side=RIGHT)
mainloop()

 显示不太好看,所以我们修改下,在字符串中使用\n对显示的文本进行换行

如果想将文字部分左对齐,并在水平位置与边框留有距离,只要设置Label的justify和padx选项即可。

 完整代码如下:

from tkinter import *

root = Tk()
#创建一个文本Label对象
textLable = Label(root,\
                  text='您所下载的影片含有未成年限制内容,\n请满18岁再查看',\
                  justify=LEFT,\
                   padx=10)
textLable.pack(side=LEFT)
photo = PhotoImage(file='18.gif')
imglable = Label(root,image=photo)
imglable.pack(side=RIGHT)
mainloop()

这是图片和文字分开的,但是有时候需要文字显示在图片的上面,那么我们只需要设置compound选项即可。

 1 from tkinter import *
 2 
 3 root = Tk()
 4 photo = PhotoImage(file='bg.gif')
 5 thelable = Label(root,
 6                  text = 'study python',
 7                  justify=LEFT,
 8                  image= photo,
 9                  compound=CENTER,
10                  font=('宋体',20),
11                  fg='white')
12 thelable.pack()
13 mainloop()

结果图:

Button组件

Button组件是用于实现一个按钮,它的绝大多数选项和Label组件是一样的,不过Button组件有一个Label组件实现不了的功能,那就是可以接收用户的信息。Button组件有一个command选项,用于指定一个函数或方法,当用户单击按钮的时候,Tkinter就会自动地调用这个函数或方法。

来我们修改上面的Label的那个例子,增加一个按钮,在按钮被单击后Label文本发生改变。想要文本发生改变,只需要设置textvariable选项为Tkinter变量即可:

 1 #
 2 from tkinter import *
 3 
 4 def callback():
 5     var.set('我才不信了,骗子')
 6 
 7 root = Tk()
 8 frame1 = Frame(root)
 9 frame2 = Frame(root)
10 var = StringVar()
11 var.set('您所下载的影片含有未成年限制内容,\n请满18岁再查看')
12 textLable = Label(frame1,
13                   textvariable=var,
14                   justify=LEFT)
15 textLable.pack(side=LEFT)
16 
17 photo = PhotoImage(file='18.gif')  #用PhotoImage实例化一个图片对象,注:支持gif的
18 imglable = Label(root,image=photo)  #创建一个图像Label的对象
19 imglable.pack(side=RIGHT)
20 
21 theButton = Button(frame2,text='我已经满18岁',command=callback) #增加一个按钮
22 theButton.pack()
23 
24 frame1.pack(padx=10,pady=10)
25 frame2.pack(padx=10,pady=10)
26 mainloop()

结果如下:我这里放两张图片了

猜你喜欢

转载自www.cnblogs.com/pinpin/p/9937426.html