@yanglt7
2018-11-16T12:11:47.000000Z
字数 2745
阅读 739
Tkinter
Label 组件是用于在界面上输出描述的标签。
例 1
提示用户 “您所下载的影片含有未成年人限制内容,\n请满18周岁后再点击观看!”。
from tkinter import *
# 导入 Tkinter 模块的所有内容
root = Tk()
# 创建一个主窗口,用于容纳整个 GUI 程序
root.title("FishC Demo")
# 设置主窗口对象的标题栏
# 添加一个 Label 组件,Label 组件可以显示文本、图标或图片。
# 创建一个文本 Label 对象,可以在字符串中直接使用 \n 对现实中的文本断行
textLabel = Label(root,
text="您所下载的影片含有未成年人限制内容,\n请满18周岁后再点击观看!",
justify=LEFT, # 设置文字左对齐
padx=10)
textLabel.pack(side=LEFT)
# 调用 Label 组件的 pack() 方法,用于自动调节组件自身的尺寸
# side 参数可以设置 LEFT、RIGHT、TOP、和 BOTTOM 四个方位,默认是 TOP
# padx、pady 选项设置偏移位置
# 创建一个图像 Label 对象
# 用 PhotoImage 实例化一个图片对象(支持 gif 格式的图片)
photo = PhotoImage(file="18.gif")
imgLabel = Label(root, image=photo)
imgLabel.pack(side=RIGHT)
mainloop()
# 通常是程序的最后一行代码,执行后程序进入主事件循环。
例 2
将图片作为背景,文字显示在图片的上面,只需设置 compound 选项。
from tkinter import *
root = Tk()
photo = PhotoImage(file="bg.gif")
theLabel = Label(root,
text="学 Python 到 FishC!",
justify=LEFT,
image=photo,
compound=CENTER, # 设置文本和图像的混合模式
font=("微软雅黑", 20), # 设置字体和字号
fg="green") # 设置文本颜色
theLabel.pack()
mainloop()
Button 组件是用于实现一个按钮,它的绝大多数选项和 Label 组件一样。特别的是 Button 组件可以接收用户的信息。Button 组件有一个 command 选项,用于指定一个函数或方法,当用户单击按钮的时候,Tkinter 就会自动地去调用这个函数或方法。
例 3
添加一个按钮,在按钮被单击后 Label 文本发生改变。想要文本发生改变,只需要设置 textvariable 即可。
from tkinter import *
def callback():
var.set("吹吧你,我才不信呢!")
root = Tk()
frame1 = Frame(root)
frame2 = Frame(root)
var = StringVar()
var.set("您所下载的影片含有未成年人限制内容,\n请满 18 周岁后再点击观看!")
textLabel = Label(frame1,
textvariable=var,
justify=LEFT)
textLabel.pack(side=LEFT)
photo = PhotoImage(file="18.gif")
imgLabel = Label(frame1, image=photo)
imgLabel.pack(side=RIGHT)
# 加一个按钮
theButton = Button(frame2, text="我已满 18 周岁", command=callback)
theButton.pack()
frame1.pack(padx=10, pady=10)
frame2.pack(padx=10, pady=10)
mainloop()
Checkbutton 组件就是常见的多选按钮,而 Radiobutton 则是单选按钮。
例 4
from tkinter import *
root = Tk()
# 需要一个 Tkinter 变量,用于表示该按钮是否被选中
v = IntVar()
c = Checkbutton(root, text="测试一下", variable=v)
c.pack()
# 如果选项被选中,那么变量 v 被赋值为 1,否则为 0
# 可以用 Label 标签动态展示
l = Label(root, textvariable=v)
l.pack()
mainloop()
例 5
from tkinter import *
root = Tk()
GIRLS = ["西施", "貂蝉", "王昭君", "杨玉环"]
v = []
for girl in GIRLS:
v.append(IntVar())
b = Checkbutton(root, text=girl, variable=v[-1])
b.pack(anchor=W) # 左对齐
# anchor 选项用于指定显示位置,可以设置为 N、NE、E、SE、S、SW、W、NW 和 CENTER 九个不同的值
mainloop()
Radiobutton 组件跟 Checkbutton 组件的用法基本一致,唯一不同的是 Radiobutton 实现的是“单选”的效果。要实现这种互斥的效果,同一组内的所有 Radiobutton 只能共享一个 variable 选项,并且需要设置不同 value 选项值。
例 6
from tkinter import *
root = Tk()
# 如果有多个选项,可使用循环来处理
LANGS = [
("Python", 1),
("Perl", 2),
("Ruby", 3),
("Lua", 4)]
v = IntVar()
v.set(1) # 设置默认在第 1 个
for lang, num in LANGS:
b = Radiobutton(root, text=lang, variable=v, value=num)
b.pack(anchor = W)
mainloop()
indicatoron 设置成 False,则是按钮形式,默认是圆圈形式
b = Radiobutton(root, text=lang, variable=v, value=num, indicatoron=False)
b.pack(fill=X)
摘自《零基础入门学习Python》
参考链接:
An Introduction To Tkinter
Tkinter汇总
Python GUI编程(Tkinter)
Tkinter颜色方案举例
python tkinter可以使用的颜色
tkinter学习-菜单与画布
程序设计思想与方法--第五章
用Python中的tkinter模块作图