GUI的最终选择 Tkinter:Label和Button组件
Posted pinpin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GUI的最终选择 Tkinter:Label和Button组件相关的知识,希望对你有一定的参考价值。
Label组件
Lable组件是用于界面上输出描述的标签,例如提示用户“您下载的电影含有未成年人限制内容,请满18岁以后点击观看!”,先来上结果图:
在来看下它的代码:
from tkinter import * root = Tk() #创建一个文本Label对象 textLable = Label(root, text=‘您所下载的影片含有未成年限制内容, 请满18岁再查看‘) textLable.pack(side=LEFT) photo = PhotoImage(file=‘18.gif‘) imglable = Label(root,image=photo) imglable.pack(side=RIGHT) mainloop()
显示不太好看,所以我们修改下,在字符串中使用 对显示的文本进行换行
如果想将文字部分左对齐,并在水平位置与边框留有距离,只要设置Label的justify和padx选项即可。
完整代码如下:
from tkinter import * root = Tk() #创建一个文本Label对象 textLable = Label(root, text=‘您所下载的影片含有未成年限制内容, 请满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(‘您所下载的影片含有未成年限制内容, 请满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()
结果如下:我这里放两张图片了
以上是关于GUI的最终选择 Tkinter:Label和Button组件的主要内容,如果未能解决你的问题,请参考以下文章