1:首先导入包from tkinter import *
2:然后创建一个对象 root=Tk()
3:写完程序后记得root.mainloop()
看下面测试代码
from tkinter import *
root=Tk()
root.mainloop()

from tkinter import *
root=Tk()
root.wm_title("这是我的第一个tkinter窗口")
root.mainloop()

from tkinter import *
root=Tk()
root.wm_title("这是我的第一个tkinter窗口")
wl=Label(root,text="欢迎来到图书馆",background='red')#text表示文本内容,root表示显示的窗口,background是底色
wl.pack()
root.mainloop()

from tkinter import *
root=Tk()
root.wm_title("这是我的第一个tkinter窗口")
w1=Label(root,text="欢迎来到图书馆",background='red')#text表示文本内容,root表示显示的窗口
w2=Label(root,text="欢迎来到图书馆",background='green')#text表示文本内容,root表示显示的窗口
w3=Label(root,text="欢迎来到图书馆",background='blue')#text表示文本内容,root表示显示的窗口
w1.pack()
w2.pack()
w3.pack()
root.mainloop()
注:这里的pack是将标签处于一个默认的位置

按钮可以执行相应的功能可以理解为一个函数,点击按钮执行相应的函数功能
from tkinter import *
def myLabel():global i,roots=Label(root,text='我爱python%d次'%i)#显示在root窗口s.pack()i+=1
root=Tk()
i=1
b=Button(root,text='python',command=myLabel)#text是按钮的名
b.pack()
root.mainloop()
以下是点击5次的结果:

from tkinter import *
def myLabel(event):#加了一个参数来接受事件global i,roots=Label(root,text='我爱python%d次'%i)s.pack()i+=1
root=Tk()
i=1
b=Button(root,text='python')#没有了command
b.bind("",myLabel)#这里Button-1是鼠标左键触发的意思,下面会详细讲
b.pack()
root.mainloop()

1.使用pack函数的时候,默认先使用的放到最上面,然后依次向下排
2.pack函数也可以接受几个参数
(1)side指定了停在哪个方向,可以是TOP,BOTTOM,LEFT,RIGHT,分别表示上下左右
(2)fill参数可以是X,Y,BOTH,NULL,即在水平方向填充,竖直方向填充,双向均填充和不填充
(3)expand可以是YES和NO,它的anchor参数可以是N,E,S,W(分别表示北东南西,对标为上右下左),以及他们的组合或CENTER表示中间
(4)ipadx表示的是内边距的x方向,ipady表示的是内边距的y方向,padx表示的是外边距的x方向,pady表示的外边距的y方向
(pack的布局感觉还是比较复杂,所以还是较常用grid)
from tkinter import *
root=Tk()
Button(root,text='A').pack(side=LEFT,expand=YES,fill=Y)
Button(root,text='B').pack(side=TOP,expand=YES,fill=BOTH,anchor=NE)
root.mainloop()

有3个参数,row表示行,column表示列,还有个sticky参数,可以是N,S,W,E分别表示上下左右
from tkinter import *
root=Tk()
Label(root,text='账号:').grid(row=0,sticky=W)
Entry(root).grid(row=0,column=1,sticky=E)
Label(root,text='密码:').grid(row=1,sticky=W)
Entry(root).grid(row=1,column=1,sticky=E)
Button(root,text="登录").grid(row=2,column=1,sticky=N)
root.mainloop()

注:pack和grid不能同时用
< Button-1 > 鼠标左击触发事件,3:鼠标右击,2:鼠标中键
还有其他的键出发,主要用鼠标,这里不再介绍,有兴趣可以查一下
用函数unbind()
Entry()
(1)get函数,不需要任何参数,返回的内容是输入框的内容
(2)e是一个文本框,可以操作e[‘show’]='*'之后就成为了一个密码框
import pymysql
from tkinter import *
root=Tk()
Label(root,text="账号").grid(row=0,column=0,sticky=W)#创建一个标签
a_txt=Entry(root)#创建一个文本
a_txt.grid(row=0,column=3,sticky=W)#将文本放入正确的位置
Label(root,text="密码").grid(row=1,column=0,sticky=W)#创建一个标签
b_txt=Entry(root)
b_txt.grid(row=1,column=3,sticky=W)#再创建一个文本
b_txt['show']='*'
root.mainloop()

1.Menu新建菜单
2.add_command添加菜单项
3.add_command中参数有label(菜单项名称),command(指定点击是否调用方法),acceletor指定的是快捷键,underline属性是否有下划线
4.可以指定使用哪一个作为顶层菜单
import pymysql
from tkinter import *
root=Tk()
menubar=Menu(root)
for item in ["文件","编辑","视图","关于"]:menubar.add_command(label=item)
root['menu']=menubar
root.mainloop()

有子菜单的情况用add_cascade,其有两个属性,menu:级联到哪个菜单项上,label:该菜单项的名
import pymysql
from tkinter import *
root=Tk()
menubar=Menu(root)
Fmenu=Menu(menubar)
Emenu=Menu(menubar)
for item in ["word文件","压缩文件","ppt文件","c++文件","python文件"]:Fmenu.add_command(label=item)
for item in ["删除","赋值","增加"]:Emenu.add_command(label=item)
menubar.add_cascade(label="文件",menu=Fmenu)
menubar.add_cascade(label="操作",menu=Emenu)
root['menu']=menubar
root.mainloop()
注:应先建立好子菜单,再建立上层菜单
from tkinter import *
def myLabel():global rootLabel(root,text="我的程序语言课程").pack()
root=Tk()
menuBar=Menu(root)
sonMenu=Menu(menuBar)
for each in ['C++','python','java','javaEE','IOS']:sonMenu.add_command(label=each)
sonMenu.add_separator()#插入分割线
for each in ['PHP','UI设计','前端']:sonMenu.add_command(label=each)
menuBar.add_cascade(label='程序设计',menu=sonMenu)
root['menu']=menuBar
root.mainloop()
from tkinter import *
def myLabel():global rootLabel(root,text="我的程序语言课程").pack()
root=Tk()
menuBar=Menu(root)
sonMenu=Menu(menuBar)
for each in ['C++','python','java','javaEE','IOS']:sonMenu.add_radiobutton(label=each)#单选
sonMenu.add_separator()#插入分割线
for each in ['PHP','UI设计','前端']:sonMenu.add_checkbutton(label=each)#多选
menuBar.add_cascade(label='程序设计',menu=sonMenu)
root['menu']=menuBar
root.mainloop()
from tkinter.dialog import *
from tkinter import *
root=Tk()
def myDialog():d=Dialog(None,title="python调查",text="喜欢python吗?",bitmap="info",default=0,strings=("喜欢","很喜欢","非常喜欢"))#对话窗口print(d.num)
btn_begin=Button(None,text="Python调查",command=myDialog)#实行按钮
btn_begin.pack()
btn_quit=Button(None,text="关闭",command=btn_begin.quit)#关闭按钮
btn_quit.pack()
btn_begin.mainloop()

from tkinter.dialog import *
from tkinter.messagebox import *
from tkinter import *
showinfo(title="python学堂",message="好好学python")

复选框通常是⽤来选择信息的时候的⼀种选择,它前⾯ 有个⼩正⽅形的⽅块,如果
选中则有⼀个对号,也可以再 次点击以取消该对号来取消选中
from tkinter.dialog import *
from tkinter.messagebox import *
from tkinter import *
timeA=0
timeB=0
def funA():global lab1,btnA,timeAif timeA%2==0:timeA+=1lab1['text']="python学科被选中"else:timeA+=1lab1['text']='python学科被取消'
def funB():global lab2, btnB, timeBif timeB % 2 == 0:timeB += 1lab2['text'] = "java学科被选中"else:timeB += 1lab2['text'] = 'java学科被取消'
root=Tk()
btnA=Checkbutton(root,text='python学科',command=funA)
btnA.pack()
btnB=Checkbutton(root,text='java学科',command=funB)
btnB.pack()
lab1=Label(root,text=" ")
lab1.pack()lab2=Label(root,text=" ")
lab2.pack()
root.mainloop()

from tkinter import *
root=Tk()
btnA=Radiobutton(root,text='python学科',value='python')
btnA.pack()
btnB=Radiobutton(root,text='java学科',value='java')
btnB.pack()
root.mainloop()

from tkinter import *
root = Tk()
t = Text(root, width = 50, height = 30)
t.pack()
root.mainloop()

from tkinter.dialog import *
from tkinter.messagebox import *
from tkinter import *
from tkinter import *
root = Tk()
root.title("我是root窗⼝")
lr = Label(root, text = "我属于root")
lr.pack()
top = Toplevel(root, width = 30, height = 20)
top.title("我是toplevel窗⼝")
lt = Label(top, text = "我属于toplevel")
lt.pack()
root.mainloop()
from tkinter import *root = Tk()
root.title("随便绘制⼀下下")
canv = Canvas(root, width = 400, height = 300, bg = "white")
canv.create_line((0,0), (200,200), width = 8)
canv.create_text(300, 30, text = "Python学院")
canv.pack()
root.mainloop()
from tkinter import *
root = Tk()
root.title("中国象棋棋盘⼿绘")
canv = Canvas(root, width = 400, height = 450)
canv.create_line((0,2), (400,2), width = 2)
for i in range(10):canv.create_line((0, i * 50), (400, i * 50), width = 2)canv.create_line((3,0), (3,450), width = 2)
for i in range(8):canv.create_line((i * 50,0), (i * 50,200), width = 2)
for i in range(8):canv.create_line((i * 50,250), (i * 50,450), width = 2)canv.create_line((397,0), (397,450), width = 2)canv.create_line((150,0), (250,100), width = 2)canv.create_line((150,100), (250,0), width = 2)canv.create_line((150,450), (250,350), width = 2)canv.create_line((150,350), (250,450), width = 2)canv.create_text(110, 220, text = "汉界")canv.create_text(290, 220, text = "楚河")canv.pack()
root.mainloop()
