初体验
Tkinter 是python默认的GUI库,不用下载的
# 创建一个主窗口,用于容纳整个GUI程序
root=tk.Tk()
# 设置主窗口对象的标题栏
root.title('初体验')
# 添加一个Laber组件,这是最常用的组件之一。它可以显示文本,图片或图标
theLabel = tk.Label(root,text='感觉不错啊')
# 然后调用Laber组件的pack()方法,用于自动调节组件自身大小和位置
theLabel.pack()
# 注意这个时候窗口还是不会显示的,执行thinter.mainloop()让程序进入主事件循环。
root.mainloop()
root,mainloop() 是窗口的主事件循环,这基本是使用tkinter 的GUI程序的最后一行代码,因为进入了主事件循环之后,就由tkinter接管一切,也就是说,一旦执行了这行代码,就不再由代码做主了,而是由 tkinter 来响应用户的输入(例如,用户按下一个按钮,tkinter就会感受到,然后就会响应你为这个事件安排好的方法,由tkinter来调用你的函数。)
厉害一点的
import tkinter as tk
class App:
def __init__(self,root):
# 创建一个框架,然后在里面添加一个button按钮组件
# 框架一般是在复杂的布局中起到将组件分组的作用
frame = tk.Frame(root)
frame.pack()
# 创建一个按钮组件,fg就是前景色的缩写
self.hi_there = tk.Button(frame,text='hi',fg='red',command=self.say_hi)
self.hi_there.pack()
def say_hi(self):
print('你好啊')
# 创建一个toplevel的根窗口,并把它作为参数实例化app对象
root = tk.Tk()
app = App(root)
# 开始主事件循环
root.mainloop()
tk.Frame 框架一般用于在复杂的布局里面,将这些组件组件进行分组。
运行起来就是一个 hi 的按钮,单机他就可以接受返回的信息 你好啊
修改pack()方法的side参数,side参数可以设置为LEFT,RIGHT,TOP,BOTTOM四个方位,默认是side = tkinter.TOP
可以修改成左对齐frame.pack(side=tk.LEFT) 或者 frame.pack(side='left')
,如果不想按钮紧挨着墙角,可以设置pack()方法的padx和pady参数自定义按钮的偏移位置。frame.pack(padx=100,pady=100)
,有前景色就有背景色,self.hi_there = tk.Button(frame,text='hi',fg='red',bg='black',command=self.say_hi)
是不是有点丑。。。。。
Label组件
Label(标签)组件用来在屏幕上显示文本或图像,Label组件仅能显示单一字体的文本,但文本可以跨越多行。另外,还可以为其中的个别字符加上下划线
from tkinter import *
# 导入tkinter 模块所有的内容
root = Tk()
# 创建一个文本label对象
textlabel = Label(root,text='你所下载的影片含有未成年人限制的内容,请慢18岁后在点击观看!')
textlabel.pack(side=LEFT) # 如果没有自定label的大小,那么这个尺寸是正好容纳其内容罢了。
# 创建一个图像label对象
# 用PhotoImage实例化一个图片对象(支持gif格式)
photo = PhotoImage(file='18.gif')
imglabel = Label(root,image=photo)
imglabel.pack(side=RIGHT)
mainloop()
可以在字符串中使用 \n 对文本进行换行,如果想将文字部分左对齐,并在水平位置与边框留有一定的距离,设置 label 的 justify 和 padx选项textlabel = Label(root,text='你所下载的影片含有未成年人限制的内容,\n请慢18岁后在点击观看!justify=LEFT,padx=10')
有时候可能需要将图片和文字分开,例如将图片作为背景,文字显示在图片上面,只需要设置compound选项即可
from tkinter import *
root = Tk()
photo = PhotoImage(file='17.gif')
thelabel = Label(root,text='就这?\nso what?',justify=LEFT,image=photo,compound=CENTER,font=('仿宋',20),fg='red')
# 文字左对齐,在图像的中央。前景色还可以使用颜色代码#00FF00 啥的
thelabel.pack()
mainloop()
参数
Label(master=None, **options) (class)
master – 父组件
**options – 组件选项,下方表格详细列举了各个选项的具体含义和用法:
选项 | 含义 |
activebackground | 1. 设置当 Label 处于活动状态(通过 state 选项设置状态)的背景色 2. 默认值由系统指定 |
activeforeground | 1. 设置当 Label 处于活动状态(通过 state 选项设置状态)的前景色2. 默认值由系统指定 |
anchor | 1. 控制文本(或图像)在 Label 中显示的位置 2. “n”, “ne”, “e”, “se”, “s”, “sw”, “w”, “nw”, 或者 “center” 来定位(ewsn 代表东西南北,上北下南左西右东)3. 默认值是 “center” |
background | 1. 设置背景颜色2. 默认值由系统指定 |
bg | 跟 background 一样 |
bitmap | 1. 指定显示到 Label 上的位图 2. 如果指定了 image 选项,则该选项被忽略 |
borderwidth | 1. 指定 Label 的边框宽度 2. 默认值由系统指定,通常是 1 或 2 像素 |
bd | 跟 borderwidth 一样 |
compound | 1. 控制 Label 中文本和图像的混合模式 2. 默认情况下,如果有指定位图或图片,则不显示文本 3. 如果该选项设置为 “center”,文本显示在图像上(文本重叠图像) 4. 如果该选项设置为 “bottom”,“left”,“right” 或 “top”,那么图像显示在文本的旁边(如 “bottom”,则图像在文本的下方) 5. 默认值是 NONE |
cursor | 1. 指定当鼠标在 Label 上飘过的时候的鼠标样式 2. 默认值由系统指定 |
disabledforeground | 1. 指定当 Label 不可用的时候前景色的颜色 2. 默认值由系统指定 |
font | 1. 指定 Label 中文本的字体(注:如果同时设置字体和大小,应该用元组包起来,如(“楷体”, 20) 2. 一个 Label 只能设置一种字体 3. 默认值由系统指定 |
foreground | 1. 设置 Label 的文本和位图的颜色 2. 默认值由系统指定 |
fg | 跟 foreground 一样 |
height | 1. 设置 Label 的高度 2. 如果 Label 显示的是文本,那么单位是文本单元 3. 如果 Label 显示的是图像,那么单位是像素(或屏幕单元)4. 如果设置为 0 或者干脆不设置,那么会自动根据 Label 的内容计算出高度 |
highlightbackground | 1. 指定当 Label 没有获得焦点的时候高亮边框的颜色 2. 默认值由系统指定,通常是标准背景颜色 |
highlightcolor | 1. 指定当 Label 获得焦点的时候高亮边框的颜色 2. 默认值由系统指定 |
highlightthickness | 1. 指定高亮边框的宽度 2. 默认值是 0(不带高亮边框) |
image | 1. 指定 Label 显示的图片 2. 该值应该是 PhotoImage,BitmapImage,或者能兼容的对象 3. 该选项优先于 text 和 bitmap 选项 |
justify | 1. 定义如何对齐多行文本 2. 使用 “left”,“right” 或 “center” 3. 注意,文本的位置取决于 anchor 选项 4. 默认值是 “center” |
padx | 1. 指定 Label 水平方向上的额外间距(内容和边框间) 2. 单位是像素 |
pady | 1. 指定 Label 垂直方向上的额外间距(内容和边框间) 2. 单位是像素 |
relief | 1. 指定边框样式 2. 默认值是 “flat” 3. 另外你还可以设置 “groove”, “raised”, “ridge”, “solid” 或者 “sunken” |
state | 1. 指定 Label 的状态 2. 这个标签控制 Label 如何显示 3. 默认值是 "normal 4. 另外你还可以设置 “active” 或 “disabled” |
takefocus | 1. 如果是 True,该 Label 接受输入焦点 2. 默认值是 False |
text | 1. 指定 Label 显示的文本 2. 文本可以包含换行符 3. 如果设置了 bitmap 或 image 选项,该选项则被忽略 |
textvariable | 1. Label 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容 2. 如果变量被修改,Label 的文本会自动更新 |
underline | 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) 2. 默认值是 -1 3. 例如设置为 1,则说明在 Button 的第 2 个字符处画下划线 |
width | 1. 设置 Label 的宽度 2. 如果 Label 显示的是文本,那么单位是文本单元 3. 如果 Label 显示的是图像,那么单位是像素(或屏幕单元)4. 如果设置为 0 或者干脆不设置,那么会自动根据 Label 的内容计算出宽度 |
wraplength | 1. 决定 Label 的文本应该被分成多少行 2. 该选项指定每行的长度,单位是屏幕单元 3. 默认值是 0 |
额,,,又是怎么多,,,挨个试试吧,,我也不知那个常用,,