import tkinter
win=tkinter.Tk()
win.title(string="吴宇翔为什么是一个傻逼?")
tkinter.Label(win,background="SystemHighlight",text="关于吴宇翔为什么这么傻逼,").pack()
tkinter.Label(win,background="SystemScrollbar",text="这是公理无需证明。").pack()
tkinter.Button(win,padx="2p",text="关闭",command=win.quit).pack(side="bottom")
win.mainloop()
import tkinter
win=tkinter.Tk()
tkinter.Button(win,relief="ridge",borderwidth=5,text="关闭",command=win.quit).pack()
win.mainloop()
import tkinter
from tkinter import Label
TEXT=["煮豆持做羹","漉豉以为汁","萁在釜下燃","豆在釜中泣","本自同根生","相煎何太急"]
RELIEF=["flat", "raised", "sunken", "solid", "ridge", "groove"]
CURSOR=["crosshair","watch","xterm","fleur","arrow","crosshair"]
TYPEFACE=["黑体","微软雅黑","新宋体","细明体","仿宋","楷体"]
FONTSTYLE=["bold","italic","underline","overstrike","italic","underline"]
win=tkinter.Tk()
win.title("GUI演示")
for i in range(len(RELIEF)):
Label(win,relief=RELIEF[i],cursor=CURSOR[i],font=(TYPEFACE[i],16,FONTSTYLE[i]),borderwidth=5,width=20, height=2,text=TEXT[i]).pack()
win.mainloop()
import tkinter
from tkinter import Label
win=tkinter.Tk()
Label(win,font=("Times",8,"bold"),text="一二三四五").pack()
Label(win,font=("Symbol",16,"bold overstrike"),text="上山打老虎").pack()
Label(win,font=("细明体",8,"bold"),text="老虎没打到").pack()
win.mainloop()
import tkinter
from tkinter import Button
from tkinter import Frame
win=tkinter.Tk()
#第一个窗体
frame1=Frame(win,relief="raised",borderwidth=2)
frame1.pack(side=tkinter.TOP,fill=tkinter.BOTH,expand=0)
Button(frame1,text="Button 1").pack(side=tkinter.LEFT,padx=10,pady=10)
Button(frame1,text="Button 2").pack(side=tkinter.LEFT,padx=10,pady=10)
Button(frame1,text="Button 3").pack(side=tkinter.LEFT,padx=10,pady=10)
#第二个窗体
frame2=Frame(win,relief="raised",borderwidth=2)
frame2.pack(side=tkinter.BOTTOM,fill=tkinter.NONE,expand=0)
Button(frame2,text="Button 4").pack(side=tkinter.RIGHT,padx="1c",pady="1c")
Button(frame2,text="Button 5").pack(side=tkinter.RIGHT,padx="1c",pady="1c")
Button(frame2,text="Button 6").pack(side=tkinter.RIGHT,padx="1c",pady="1c")
#第三个窗体
frame3=Frame(win,relief="raised",borderwidth=2)
frame3.pack(side=tkinter.LEFT,fill=tkinter.X,expand=1)
Button(frame3,text="Button 7").pack(side=tkinter.TOP,padx="0.1i",pady="0.1i")
Button(frame3,text="Button 8").pack(side=tkinter.TOP,padx="0.1i",pady="0.1i")
Button(frame3,text="Button 9").pack(side=tkinter.TOP,padx="0.1i",pady="0.1i")
#第四个窗体
frame4=Frame(win,relief="raised",borderwidth=2)
frame4.pack(side=tkinter.RIGHT,fill=tkinter.Y,expand=1)
Button(frame4,text="Button 10").pack(side=tkinter.BOTTOM,padx="10p",pady="10p")
Button(frame4,text="Button 11").pack(side=tkinter.BOTTOM,padx="10p",pady="10p")
Button(frame4,text="Button 12").pack(side=tkinter.BOTTOM,padx="10p",pady="10p")
import tkinter
from tkinter import Button
from tkinter import Frame
win=tkinter.Tk()
frame=Frame(win,relief="raised",borderwidth=2)
frame.pack(side=tkinter.TOP,fill=tkinter.BOTH,expand=1)
for i in range(5):
for j in range(5):
Button(frame,text="("+str(i)+","+str(j)+")").grid(row=i,column=j)
win.mainloop()
import tkinter
from tkinter import Button
from tkinter import Frame
win=tkinter.Tk()
frame=Frame(win,relief="raised",borderwidth=2,width=400,height=300)
frame.pack(side=tkinter.TOP,fill=tkinter.BOTH,expand=1)
button1=Button(frame,text="Button 1")
button1.place(x=40,y=40,anchor=tkinter.W,width=80,height=40)
button2=Button(frame,text="Button 2")
button2.place(x=140,y=80,anchor=tkinter.W,width=80,height=40)
win.mainloop()
鼠标事件
import tkinter
from tkinter import Button
from tkinter import Frame
from tkinter import Label
#处理鼠标光标进入窗体时的事件
def handleEnterEvent(event):
label1["text"]="you enter the frame"
label2["text"]=""
label3["text"]=""
#处理鼠标光标离开窗体时的事件
def handleLeaveEvent(event):
label1["text"]="you leave the frame"
label2["text"]=""
label3["text"]=""
#处理在窗体内左击的事件
def handleLeftButtonPressEvent(event):
label1["text"]="you press the left button"
label2["text"]="x="+str(event.x)
label3["text"]="y="+str(event.y)
#处理在窗体内单击鼠标中间键的事件
def handleMiddleButtonPressEvent(event):
label1["text"]="you press the middle button"
label2["text"]=""
label3["text"]=""
#处理在窗体内右击的事件
def handleRightButtonPressEvent(event):
label1["text"]="you press the right button"
label2["text"]="x="+str(event.x)
label3["text"]="y="+str(event.y)
#处理在窗体内左击,然后移动鼠标光标的事件
def handleLeftButtonMoveEvent(event):
label1["text"]="you are moving mouse with the left button pressed"
label2["text"]="x="+str(event.x)
label3["text"]="y="+str(event.y)
#处理在窗体内释放鼠标左键的事件
def handleLeftButtonReleaseEvent(event):
label1["text"]="you release the left button"
label2["text"]="x="+str(event.x)
label3["text"]="y="+str(event.y)
#处理在窗体内连续按下两次鼠标左键的事件
def handleLeftButtonDoubleClickEvent(event):
label1["text"]="you are double clicking the left button"
label2["text"]="x="+str(event.x)
label3["text"]="y="+str(event.y)
#创建主窗口
win=tkinter.Tk()
#创建窗体
frame=Frame(win,relief="raised",borderwidth=2,width=300,height=200)
frame.bind("<Enter>",handleEnterEvent)
frame.bind("<Leave>",handleLeaveEvent)
frame.bind("<Button-1>",handleLeftButtonPressEvent)
frame.bind("<ButtonPress-2>",handleMiddleButtonPressEvent)
frame.bind("<3>",handleRightButtonPressEvent)
frame.bind("<B1-Motion>",handleLeftButtonMoveEvent)
frame.bind("<ButtonRelease-1>",handleLeftButtonReleaseEvent)
frame.bind("<Double-Button-1>",handleLeftButtonDoubleClickEvent)
#文字标签,显示鼠标事件的种类
label1=Label(frame,text="No event happend",foreground="#0000ff",background="#00ff00")
label1.place(x=16,y=20)
#文字标签,显示鼠标事件发生时的x坐标
label2=Label(frame,text="x=",foreground="#0000ff",background="#00ff00")
label2.place(x=16,y=40)
#文字标签,显示鼠标事件发生时的y坐标
label3=Label(frame,text="y=",foreground="#0000ff",background="#00ff00")
label3.place(x=16,y=60)
#设置窗体的位置
frame.pack(side=tkinter.TOP)
#开始窗口的事件循环
win.mainloop()
键盘事件
import tkinter
from tkinter import Button
from tkinter import Frame
from tkinter import Label
#处理在窗体内按下键盘按键(非功能键)的事件
def handleKeyEvent(event):
label1["text"]="you press the "+event.keysym+" key\n"
label1["text"]+="keycode="+str(event.keycode)
#创建主窗口
win=tkinter.Tk()
#创建窗体
frame=Frame(win,relief="raised",borderwidth=2,width=300,height=200)
#将主窗口与键盘事件关联
eventType=["Key","Control-Up","Return","Escape","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","Num_Lock","Scroll_Lock","Caps_Lock","Print","Insert","Delete","Pause","Prior","Next","BackSpace"
,"Tab","Cancel","Control_L","Alt_L","Shift_L","End","Home","Up","Down","Left","Right"]
for type in eventType:
win.bind("<"+type+">",handleKeyEvent)
#文字标签,显示键盘事件的种类
label1=Label(frame,text="No event happend",foreground="#0000ff",background="#00ff00")
label1.place(x=16,y=20)
#设置窗体的位置
frame.pack(side=tkinter.TOP,expand=1)
#开始窗口的事件循环
win.mainloop()
系统协议
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
#处理WM_DELETE_WINDOW事件
def handleProtocol():
#打开一个[确定/取消]对话框
if tkinter.messagebox.askokcancel("提示","你确定要关闭窗口吗?"):
#确定要结束应用程序
win.destroy()
#创建主窗口
win=tkinter.Tk()
#创建协议
win.protocol("WM_DELETE_WINDOW", handleProtocol)
#开始窗口的事件循环
win.mainloop()
Button控件——bitmap()显示在按钮上的位图
此属性只有在忽略image属性时才有用。此属性一般可以设置成gray12,gray25,gray50,gray75,hourglass,error,questhead,info,warning与question.也可以直接使用XBM(X Bitmap)文件,在XBM文件名称之前加上一个@符号,例如bitmap="@act_fold.xbm",假如要使用XBM文件时,需把XBM文件放在工程文件夹中。
在python安装包中有自带的XBM文件
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
#创建主窗口
win=tkinter.Tk()
Button(win,bitmap="@act_fold.xbm",activeforeground="#0000ff",activebackground="#00ff00",command=win.quit).pack()
#开始窗口的事件循环
win.mainloop()
Canvas控件
(1)creat_arc(coord,start,extent,fill):创建一个弧形。参数coord定义画弧形区的左上角和右下角坐标;参数start定义画弧形区块的起始角度(逆时针方向);参数extent定义画弧形区块的结束角度(逆时针方向);参数fill定义填满弧形区块的颜色。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
#创建主窗口
win=tkinter.Tk()
coord=10,50,240,210
canvas=Canvas(win)
canvas.create_arc(coord,start=0,extent=270,fill="red")
canvas.pack()
#开始窗口的事件循环
win.mainloop()
(2)create_bitmap(x,y,bitmap):创建一个位图。参数x与y定义位图的左上角坐标,参数bitmap定义位图的来源,可以是 gray12,gray25,gray50,gray75,hourglass,error,questhead,info,warning与question.也可以直接使用XBM(X Bitmap)文件,在XBM文件名称之前加上一个@符号,例如bitmap="@act_fold.xbm",假如要使用XBM文件时,需把XBM文件放在工程文件夹中。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
#创建主窗口
win=tkinter.Tk()
coord=10,50,240,210
canvas=Canvas(win)
canvas.create_bitmap(40,40,bitmap="warning")
canvas.pack()
#开始窗口的事件循环
win.mainloop()
(3)creat_image(x,y,image):创建一个图片。参数x与y定义图片左上角的坐标;参数image定义图片的来源,必须是tkinter模块的BitmapImage或者PhotoImage类的 实例变量。注意tkinter模块只能加载gif格式的图片,其他格式如jpg,png需要加载其他模块。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
#创建主窗口
win=tkinter.Tk()
img=PhotoImage(file="element_obj.gif")
canvas=Canvas(win)
canvas.create_image(40,140,image=img)
canvas.pack()
#开始窗口的事件循环
win.mainloop()
(4)creat_line(x0,y0,x1,y1,…xn,yn,options):创建一个线条。参数x0,y0,x1,y1,…,xn,yn定义线条的坐标;参数options可以是width或者fill。width定义线条的宽度,默认值是一个像素。fill定义线条的颜色,默认值是black。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
#创建主窗口
win=tkinter.Tk()
canvas=Canvas(win)
canvas.create_line(10,10,40,120,230,270,width=10,fill="green")
canvas.pack()
#开始窗口的事件循环
win.mainloop()
(5)creat_oval(x0,y0,x1,y1,options):创建一个圆形或者椭圆形。参数x0与y0定义绘图区域的左上角坐标;参数x1与y1定义绘图区域的右下角坐标;参数options可以是fill或者outline。fill定义填满圆形或者椭圆形的颜色,默认值是empty(透明),outline定义圆形或者椭圆形的外围颜色。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
#创建主窗口
win=tkinter.Tk()
canvas=Canvas(win)
canvas.create_oval(10,10,240,240,outline="red",fill="green")
canvas.pack()
#开始窗口的事件循环
win.mainloop()
(6)creat_polygon(x0,y0,x1,y1,…,xn,yn,options):创建一个至少三个点的多边形。参数x0,y0,x1,y1,…,xn,yn定义多边形的坐标;参数options可以是fill、outline或者splinesteps。fill定义填满多边形的颜色,默认值是black。outline定义多边形的外围颜色,默认是black。solinesteps是一个整数,定义曲线的平滑度。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
#创建主窗口
win=tkinter.Tk()
canvas=Canvas(win)
canvas.create_polygon(10,10,320,80,210,230,outline="blue",splinesteps=1,fill="green")
canvas.pack()
#开始窗口的事件循环
win.mainloop()
(7)creat_rectangle(x0,y0,x1,y1,options):创建一个矩形。参数x0,y0定义矩形左上角的坐标,参数x1,y1定义矩形右下角的坐标。参数options可以是fill或者outline。fill定义填满矩形的颜色,默认值是empty(透明),outline定义矩形的外围颜色,默认是black。矩形的外围是空字符串的话,表示不画矩形的外围。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
#创建主窗口
win=tkinter.Tk()
canvas=Canvas(win)
canvas.create_rectangle(10,10,220,220,outline="blue",fill="green")
canvas.pack()
#开始窗口的事件循环
win.mainloop()
(8)creat_text(x0,y0,text,options):创建一个文字字符串。参数x0与y0定义文字字符串的左上角坐标;参数text定义文字字符串的文字;参数options可以是anchor或者fill。anchor定义(x0,y0)在文字字符串里面的位置,默认值是CENTER,也可以是N,NE,E,SE,S,SW,W,NW等。fill定义文字字符串的颜色,默认值是empty(透明)。
import tkinter
import tkinter.messagebox
from tkinter import Button
from tkinter import Frame
from tkinter import Label
from tkinter import Canvas
from tkinter import PhotoImage
#创建主窗口
win=tkinter.Tk()
canvas=Canvas(win)
canvas.create_text(80,40,text="采菊东南下,悠然见南山。",fill="red")
canvas.pack()
#开始窗口的事件循环
win.mainloop()