Python学习笔记——图形用户界面(1)

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()

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值