专栏文章索引:Python
有问题可私聊:QQ:3375119339
目录
一、窗口设计
1.创建窗口
2.窗口属性
3.窗口位置
4.Widget
一、窗口设计
1.创建窗口
实例-创建空白窗口:
from tkinter import * # 导入tkinter模块
win = Tk() # 通过Tk()方法建立一个根窗口
win.mainloop() # 进入等待与处理窗口事件
该窗口的大小为默认大小,用户可以借助鼠标拖动窗口和改变窗口大小。其左上角的羽毛是窗口的默认图标,而羽毛右边的“tk”是窗口的默认名称。单击右侧的按钮可以最大化、最小化以及关闭该窗口。
2.窗口属性
方法 | 含义 | 示例 |
---|---|---|
title() | 设置窗口的标题 | win.title('标题') |
geoemetry("widthxheight") | 设置窗口的大小以及位置,width和height为窗口的宽度和高度,单位为pielx | win.geoemetry("220x210") |
maxsize() | 窗口的最大尺寸 | win.maxsize(500, 500) |
minsize() | 窗口的最小尺寸 | win.maxsize(200, 500) |
configure(bg=color) | 为窗口添加背景颜色 | 1.win.configure(bg="#CD5C5C") 2.win.configure(bg='IndianRed') |
resizable(True, True) | 设置窗口大小是否可更改,第一个参数表示是否可以更改宽度,第二个参数表示是否可以更改高度,值为True(或1)表示可以更改宽度或高度,若为False(或0)表示无法更改窗口的宽度或高度 | win.resizable(0, True) |
state("zoomed") | 将窗口最大化 | win.state('zoomed') |
iconify() | 将窗口最小化 | win.iconify() |
iconbitmap() | 设置窗口的图标 | 1.内置图标
win.iconbitmap('question') 2.自定义图标 win.iconbitmap('table_lamp_light_icon_229888.ico') |
实例-设置窗口样式:
from tkinter import *
win = Tk()
win.title('设置窗口样式') # 窗口的标题
win.geometry('220x220') # 窗口的大小
win.maxsize(500, 500) # 窗口的最大尺寸
win.minsize(200, 200) # 窗口的最小尺寸
win.configure(bg='#CD5C5C') # 窗口的背景颜色
Label(win, text='这是内容').pack(pady=40) # 在窗口中添加一行字
win.iconbitmap('question') # 设置窗口的图标
win.mainloop()
3.窗口位置
- 将窗口设置在相对屏幕左上角的位置
win.geometry("300x308+x+y") # 此时窗口的左上角顶点为(x,y)
“+x”表示窗口左侧与屏幕左侧的距离为x;“+y”表示窗口顶部与屏幕顶部的距离为y。
- 将窗口设置在相对屏暮右下角的位置
win.geometry("308x300-x-y") # 此时窗口的右下角顶点为(x,y)
实例-设置窗口大小及位置
from tkinter import *
win = Tk()
win.title('窗口的位置及大小') # 窗口的标题
win.configure(bg='PaleGreen') # 窗口的背景颜色
winw = 300 # 窗口的宽度
winh = 220 # 窗口的高度
scrw = win.winfo_screenwidth() # 获取屏幕的宽度
scrh = win.winfo_screenheight() # 获取屏幕的宽度
x = (scrw - winw) / 2 # 计算窗口的水平位置,方法为:(屏幕宽度-窗口宽度)/2
y = (scrh - winh) / 2 # 计算窗口的垂直位置,方法为:(屏幕宽度-窗口宽度)/2
win.geometry('%dx%d+%d+%d' % (winw, winh, x, y)) # 设置窗口的大小和位置
Label(win, text='laoxiaohai').pack()
win.mainloop()
4.Widget
组件的分类
属性 | 含义 |
---|---|
文本类组件 |
|
按钮类组件 |
|
选择列表类组件 |
|
容器类组件 |
|
会话类组件 |
|
菜单类组件 |
|
进度条组件 |
|
组件的公共属性
虽然tkinter模块中提供了众多组件且每个组件都有各自的属性,但有些属性是各组件通用的
属性 | 含义 |
---|---|
foreground或fg | 设置组件中文字的颜色 |
background或bg | 设置组件的背景颜色 |
width | 设置组件的宽度 |
height | 设置组件的高度 |
anchor | 文字在组件内输出的位置,默认为center(水平、垂直方向都居中) |
padx | 组件的水平间距 |
pady | 组件的垂直间距 |
font | 组件的文字的样式 |
relief | 组件的边框样式 |
cursor | 鼠标悬停在组件上时的样式 |
- foreground(fg)和background (bg)设置组件的前景颜色(文字颜色)和背景颜色
实例-指定前景颜色和背景颜色:
from tkinter import *
win = Tk()
Label(win, text='laoxiaohai', fg='red', bg='yellow').pack() # 指定前景色和背景色
win.mainloop()
- width和height设置组件的宽度与高度
tkinter模块中大多数组件都可以通过width和height设置宽度和高度,大部分组件设置大小时,单位为像素,但是也有部分组件单位为文字的行,例如Label组件。
实例-指定组件的高度与宽度:
from tkinter import *
win = Tk()
Label(win, text='laoxiaohai', fg='red', bg='green', width=20, height=3, anchor='nw').pack()
win.mainloop()
- padx和pady设置组件的间距
padx和pady用于设置文字距离组件边缘的间距。通常如果没有为组件设置大小和设置间距,组件的大小应该是适应内容;如果设置了间距,那么无论标签里的内容多少,里面的内容始终能够与标签边缘保持距离。
实例-设置组件的间距
from tkinter import *
win = Tk()
Label(win, text='laoxiaohai', fg='red', bg='grey', padx=20, pady=10).pack()
win.mainloop()
- font设置文字属性
font标签中可以设置文字相关属性
参数 | 含义 |
---|---|
size | 设置字号,单位px |
family | 设置字体,例如Times |
weight | 设置文字粗细,如bold |
slant | 设置斜体,如italic |
underline | 添加下划线,值为True或者False添加删除线,值为True或者 |
overstrike | False |
实例-设置文字属性
from tkinter import *
win = Tk()
Label(win, text='laoxiaohai', fg='red', bg='grey', font='华文新魏 16 bold').pack()
win.mainloop()
- relief属性用于设置组件的边框样式
参数 | 含义 |
---|---|
flat | 创建一个没有凸起或凹陷的的边框。 |
raised | 创建一个凸起的边框。 |
sunken | 创建一个凹陷的边框。 |
ridge | 创建一个凸起的边框,看起来像山脊。 |
groove | 创建一个凹陷的边框,看起来像沟槽。 |
solid | 创建一个实心而不是凸起或凹陷的边框。 |
实例-设置边框样式:
from tkinter import *
win = Tk()
Button(win, text='这只是一个按钮', fg='red', bg='#00f5ff', relief='groove').pack()
win.mainloop()
- cursor:当鼠标悬停在组件上时的鼠标样式
因为各系统的不同,所以同样的参数值,其表现样式可能会略有差异。
参数 | 含义 |
---|---|
arrow | 标准箭头光标 |
circle | 圆形光标 |
cross | 十字光标 |
dot | 点形光标 |
exchange | 双向箭头光标 |
hand1、hand2 | 手形光标 |
sb_h_double_arrow、sb_v_double_arrow | 水平或垂直双向箭头光标 |
sizing | 四个角上有箭头的光标,表示可以调整大小 |
spider | 可能的话,会显示成蜘蛛的形状 |
实例-设置当鼠标悬停在组件上时的鼠标样式:
from tkinter import *
win = Tk()
label = Label(win, bg="63A4EB", relief="groove", cursor="spider", width="30", height=2)
label.pack(padx=5, pady=5, side=LEFT)
win.mainloop()
Widget的公共方法
同样,Widget中也有一些方法是各组件都通用的
- config():为该组件配置参数。
- keys():获取该组件的所有参数,并返回一个列表。
前文都是在组件中直接设置其属性,除此之外也可以通过config)配置参数。
案例-组件的公共方法:
from tkinter import *
win = Tk()
label = Label(win, text='laoxiaohai')
label.config(bg='red', fg='green')
label.pack()
print(win.keys())
win.mainloop()