①导入标准库(tkinter为python标准库无需安装
from tkinter import *

②窗口的创建和设置

窗口的创建和设置方法

注释

root=Tk()

生成主窗口

root.geometry(‘250x250’)

改变窗体大小(‘宽x高’),注意是x不是*

root.geometry(‘+450+450’)

改变窗体位置(‘+横坐标+纵坐标’)

root.title(‘标题名’)

修改框体的名字

root.mainloop()

显示主窗口

root.resizable(0, 0)

将窗口大小设置为不可变

root.resizable(False, False)

将窗口大小设置为不可变

from tkinter import *

root=Tk()
root.geometry('300x300')
root.title('hello')
root.geometry('+400+300')
root.mainloop()

python tkinter输入框大小自定义 tkinter entry设置宽度_下划线

————————————————————————————————————————————
③ 三种组件位置设置方法(实例包含在下面的组件例子中
-pack()

参数

参数值

注释

side

组件位于容器的方位

LEFT

TOP

(默认)

RIGTH

BOTTOM

fill

X

水平方向填充

Y

竖直方向填充

BOTH

水平和竖直方向填充

NONE

不填充

expand

YES

扩展整个空白区

NO

不扩展

anchor

N


E


S


W


CENTER

中间

SE

右下

NE

右上

SW

左下

NW

左上

关于pack的组件布局原理不清晰的,可浏览下面这篇博客
pack的组件布局原理

-grid() 网格化设置

参数

注释

row

组件的行宽

rowspan

跨越的行数

column

组件的列宽

columnspan

跨越的列数

sticky

对齐方式(参数值S,W,N,E)

-place()

参数

注释

anchor

组件对齐方式(参数值:S,W,E,N,SE,SW,NW,NE,CENTER,默认为CENTER)

x

组件左上角的x坐标

y

组件左上角的y坐标

relx

组件相对于窗口的x坐标,应为0-1之间的小数

rely

组件相对于窗口的y坐标,应为0-1之间的小数

width

组件的宽度

height

组件的高度

relwidth

组件相对于窗口的宽度,应为0-1之间的小数

relheight

组件相对于窗口的高度,应为0-1之间的小数

④核心组件

tkinter核心组件

中文释义

介绍

Label

标签

用来显示文字或图片

Button

按钮

类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作、事件

Entry

单行文字域

用来收集键盘输入

Text

多行文字区域

可用来收集(或显示)用户输入的文字

Frame

框架

包含其他组件的纯容器

Checkbutton

选择按钮

一组方框,可以选择其中的任意个

Listbox

列表框

一个选项列表,用户可以从中选择

Menu

菜单

点下菜单按钮后弹出的一个选项列表,用户可以从中选择

Menubutton

菜单按钮

用来包含菜单的组件(有下拉式、层叠式等等)

Message

消息框

类似于标签,但可以显示多行文本

Radiobutton

单选按钮

一组按钮,其中只有一个可被“按下” (类似 HTML 中的 radio)

Scale

进度条

线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值

Scrollbar

滚动条

对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能

Toplevel

顶级

类似框架,但提供一个独立的窗口容器

Canvas

画布

提供绘图功能(直线、椭圆、多边形、矩形) ,可以包含图形或位图

⑤核心组件详细介绍
Button (根对象,[属性列表])

参数

注释

text

按钮文本内容

font

字体(样式,大小)

bg (background)

背景颜色(按钮颜色)

fg (foreground)

前景颜色(字体颜色)

width

按钮宽度

height

按钮高度

command

按钮关联的函数,当按钮被点击时,执行该函数

padx

设置按钮文本与按钮边框x轴方向的距离

pady

设置按钮文本与按钮边框y轴方向的距离

bd(borderwidth)

按钮边框宽度

anchor

控制按钮文本的位置(参数值:S,W,E,N,SE,SW,NW,NE,CENTER,默认为CENTER)

image

与PhotoImage 一起使用,图片只能为gif格式

relief

三维效果 (参数值:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT)

bitmap

位图

compound

图片和文字一同显示

cursor

鼠标移动到框架时,光标的形状(参数值:arrow, circle, cross, plus 等)

justify

显示多行文本的时候,设置不同行之间的对齐方式(参数值:LEFT, RIGHT, CENTER)

state

设置按钮状态,参数值:NORMAL、ACTIVE、 DISABLED。默认 NORMAL

wraplength

指定每行文本的宽度,单位是屏幕单元

underline

下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,第二个字符带下划线,以此类推

from tkinter import *
root = Tk()
root.geometry('750x400')
button1=Button(text='测试测试测试',bg='blue',fg='yellow',bd=2,anchor=SW,activebackground='pink',activeforeground='white',height=2,width=8,underline=0,font=('华文行楷',20),padx=20,pady=30,state=ACTIVE,wraplength=120,justify=RIGHT,cursor='cross')
button1.grid(row=4,column=7)

button2=Button(root,text='测试2',bg='purple',font=('华文行楷',20),fg='blue',width=8,height=5,anchor=E,padx=20)
button2.grid(row=4,column=1)

picture=PhotoImage(file="E:\\1.gif")#必须是真正的gif图片!,单纯改变图片的格式改不了图片的本质,无法运行
button3=Button(root,text='图片',image=picture,compound='left')
button3.grid(row=2,column=5)

button4=Button(root,bitmap='question',bd=2)
button4.grid(row=1,column=5)

button5=Button(root,relief=SUNKEN,text='测试5')
button5.grid(row=1,column=4)

root.mainloop()

python tkinter输入框大小自定义 tkinter entry设置宽度_下划线_02


Label (根对象,[属性列表])

参数

注释

text

标签名称

font

字体(样式,大小)

bg (background)

背景颜色(标签颜色)

fg (foreground)

前景颜色(字体颜色)

width

标签宽度

height

标签高度

anchor

锚选项,控制标签文本的位置(参数值:S,W,E,N,SE,SW,NW,NE,CENTER,默认为CENTER)

bitmap

位图

relief

三维效果(参数值:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT)

image

与PhotoImage 一起使用,图片只能为gif图片

compound

图片和文字一同显示

padx

设置文本与标签边框x轴方向上距离

pady

设置文本与标签边框y轴方向上的距离

cursor

鼠标移动到框架时,光标的形状(参数值:arrow, circle, cross, plus 等)

justify

显示多行文本的时候,设置不同行之间的对齐方式(参数值:LEFT, RIGHT, CENTER)

state

设置标签状态,参数值:NORMAL、ACTIVE、 DISABLED。默认 NORMAL

wraplength

指定每行文本的宽度,单位是屏幕单元

underline

下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,第二个字符带下划线,以此类推

from tkinter import *

root =Tk()
root.geometry('600x450')
label1=Label(root,text='测试1',bg='purple',font=('华文行楷',20),fg='blue')
label1.grid(row=1,column=1)

label2=Label(root,text='测试2',bg='purple',font=('华文行楷',20),fg='blue',width=10,height=5,anchor=E,padx=20)
label2.grid(row=4,column=1)

picture=PhotoImage(file="E:\\1.gif")#必须是真正的gif图片,改变图片的格式改不了图片的本质,无法运行
label3=Label(root,text='图片',image=picture,compound='left',relief=SUNKEN)
label3.grid(row=2,column=5)

label4=Label(root,bitmap='question',bd=2,relief=SUNKEN)
label4.grid(row=1,column=5)

label5=Label(root,relief=SUNKEN,text='测试5')
label5.grid(row=1,column=4)

root.mainloop()

python tkinter输入框大小自定义 tkinter entry设置宽度_属性列表_03

from tkinter import *


root=Tk()
root.geometry('300x300')
root.title('hello')
root.geometry('+400+300')

var=StringVar()
label=Label(root,textvariable=var,bg='yellow',font=('华文行楷',20),width=12,height=2)
label.pack()
onhit=-1
def hit():
    global onhit
    if  onhit==-1:
        var.set('')
        onhit = onhit + 1
    elif onhit==0:
        var.set('你')
        onhit=onhit+1
    elif onhit ==1:
        var.set('被')
        onhit = onhit + 1
    elif onhit==2:
        var.set('骗了')
        onhit = onhit + 1
    elif onhit==3:
        var.set('哈哈哈哈哈')

button=Button(root,text='点击',width=12,height=2,command=hit)
button.pack()
root.mainloop()

Entry(根对象,[属性列表])

参数

注释

bg

背景色

fg

前景色

font

字体(样式,大小)

width

文本框宽度

bd

边框宽度

show

输入显示方式

textvariable

关联一个 Tkinter variable 对象, 通常为 StringVar 对象. 控件文本将在该对象改变时跟着改变.

from tkinter import *
root=Tk()
root.geometry('300x300')
root.title('hello')
root.geometry('+400+300')
entry=Entry(root,fg='blue',font=('华文行楷',20),bg='pink',width=20,bd=4,show='*')
entry.grid()
root.mainloop()

python tkinter输入框大小自定义 tkinter entry设置宽度_python_04


Text(根对象,[属性列表])

参数

注释

bg

背景色

fg

前景色

font

字体(样式,大小)

width

文本框宽度

bd

边框宽度

height

文本框高度

from tkinter import *
root=Tk()
root.geometry('300x300')
root.title('hello')
root.geometry('+400+300')
picture=PhotoImage(file="E:\\1.gif")
text=Text(root,fg='blue',font=('华文行楷',20),bg='pink',width=10,height=4,bd=4)
text.grid()
root.mainloop()

python tkinter输入框大小自定义 tkinter entry设置宽度_属性列表_05


Frame(根对象,[属性列表])

参数

注释

bg

背景色

bd

边框宽度

relief

三维效果

width

框架宽度

from tkinter import *
root=Tk()
root.geometry('450x450')
frame=Frame(root,height=2,width=3,bd=5,relief='sunken')
frame.pack()
button=Button(frame,text='测试',bd=2)
button.pack()
root.mainloop()

Menu(根对象,[属性列表])

参数

注释

bg

背景色

fg

前景色

font

字体(样式,大小)

width

文本框宽度

bd

边框宽度

height

文本框高度

方法

注释

add_cascade

添加子选项

add_command

添加命令(label参数为显示内容)

add_separator

添加分隔线

add_checkbutton

添加确认按钮

from tkinter import *


root = Tk()



# 创建一个顶级菜单
menubar = Menu(root)

# 创建一个下拉菜单“文件”,然后将它添加到顶级菜单中
filemenu = Menu(menubar, tearoff=False)
filemenu.add_command(label="打开")

filemenu.add_separator()
filemenu.add_command(label="保存")
menubar.add_cascade(label="文件",menu=filemenu)

# 创建另一个下拉菜单“编辑”,然后将它添加到顶级菜单中
editmenu = Menu(menubar, tearoff=False)
editmenu.add_command(label="拷贝")
editmenu.add_separator()
editmenu.add_command(label="粘贴")

menubar.add_cascade(label="编辑", menu=editmenu)

# 显示菜单
root.config(menu=menubar)
root.mainloop()

python tkinter输入框大小自定义 tkinter entry设置宽度_文本框_06


Canvas(根对象,[属性列表])

参数

注释

bd

边框宽度

bg

背景色 (画布颜色)

cursor

鼠标移动到框架时,光标的形状(参数值:arrow, circle, cross, plus 等)

relief

三维效果(参数值:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT)

width

画布宽度

height

画布高度

形状

方法

扇形

coord = 10, 50, 240, 210 _.create_arc(coord, start=0, extent=150, fill=“blue”)

线条

对象.create_line(x0, y0, x1, y1, …, xn, yn, options)


对象.create_oval(x0, y0, x1, y1, options)

至少有三个顶点的多边形

对象.create_polygon(x0, y0, x1, y1,…xn, yn, options)

图像

filename = PhotoImage(file = “E:\\sunshine.gif”) _.create_image(50, 50, anchor=NE, image=filename)

from tkinter import *


root = Tk()


canvas=Canvas(root)
coord = 10, 50, 240, 210
canvas.create_arc(coord, start=0, extent=150, fill="blue")

line = canvas.create_line(10, 20, 30, 40)


canvas.create_oval(150,150,190,190)
canvas.create_polygon(270,270,190,190,210,240)
canvas.pack()
root.mainloop()

python tkinter输入框大小自定义 tkinter entry设置宽度_下划线_07

弹窗messagebox

注意此处需重新导入tkinter 中的messagebox
from tkinter import messagebox

种类

方法

消息提示框

messagebox.showinfo(‘弹窗名称’,'弹窗内容 ')

消息警告框

messagebox.showwarning(‘弹窗名称’,'弹窗内容 ')

错误消息框

messagebox.showerror(‘弹窗名称’,'弹窗内容 ’ )

对话框

messagebox.askokcancel(‘弹窗名称’, '弹窗内容 ')

确定/取消,返回值true/false

对话框

messagebox.askquestion (‘弹窗名称’, '弹窗内容 ')

是/否,返回值yes/no

对话框

messagebox.askyesno (‘弹窗名称’,'弹窗内容 ')

是/否, 返回值true/false

对话框

messagebox.askretrycancel (‘弹窗名称’,'弹窗内容 ')

重试/取消,返回值true/false

事件绑定

在此不详细介绍,大家可以看这篇博客

事件绑定 ⑥tkinter 中的界面颜色表

python tkinter输入框大小自定义 tkinter entry设置宽度_python_08


提供一个完整的程序供大家参考

绩点计算小程序