python图形用户接口(GUI)

图形用户接口(GUI)

GUI编程基础

from tkinter import *


root = Tk()  # 创建一个主窗体。相当于提供了一个搭积木的桌子



root.mainloop()  # 开启一个消息循环队列,可以持续不断地接受操作系统发过来的键盘鼠标事件,并作出相应的响应
# mainloop应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件

from tkinter import *


root = Tk()  # 创建一个主窗体。相当于提供了一个搭积木的桌子

label = Label(root, text="Welcome to Python")  # label的text属性,显示一条文本信息内容

canvas = Canvas(root, bg="white")  # 画布可以显示各种文字图形信息

button = Button(root, text="Click me")  # 在主窗体里面添加一个按钮

# 创建完控件之后并不能直接在主窗体里面显示,需要对它进行布局器的管理
#pack默认是从上到下进行排列
label.pack()
canvas.pack()
button.pack()

root.mainloop()  # 开启一个消息循环队列,可以持续不断地接受操作系统发过来的键盘鼠标事件,并作出相应的响应
# mainloop应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件

从左到右进行排列

from tkinter import *


root = Tk()  # 创建一个主窗体。相当于提供了一个搭积木的桌子

label = Label(root, text="Welcome to Python")  # label的text属性,显示一条文本信息内容

canvas = Canvas(root, bg="white")  # 画布可以显示各种文字图形信息

button = Button(root, text="Click me")  # 在主窗体里面添加一个按钮

# 创建完控件之后并不能直接在主窗体里面显示,需要对它进行布局器的管理
# pack默认是从上到下进行排列
label.pack(side=LEFT)
canvas.pack(side=LEFT)
button.pack(side=LEFT)

root.mainloop()  # 开启一个消息循环队列,可以持续不断地接受操作系统发过来的键盘鼠标事件,并作出相应的响应
# mainloop应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件

布局管理器有三种,pack只是其中一种

GUI事件与事件处理

       事件(Events):当受控对象状态改变时,视窗操作系统给应用程序的通知或消息

       事件处理(Event handlers):捕获并响应事件的用户函数

       绑定或捆绑(bind): 建立事件与响应事件处理函数联系

事件就是像我们点击一个鼠标或者输入一些文本信息,操作系统给GUI程序发出的鼠标或者键盘消息

绑定就是将事件和事件处理关联在一起

事件有以下几种

from tkinter import *

root = Tk()  # 创建一个主窗体。相当于提供了一个搭积木的桌子

label = Label(root, text="Welcome to python")
button1 = Button(root, text="relief")  # 控制label的边界
button2 = Button(root, text="color")  # 控制label的颜色

label.pack()
button1.pack(side=LEFT, anchor=CENTER, expand=YES)  # 自左向右排列,显示在中间,拓展占满整个空间
button2.pack(side=LEFT, anchor=CENTER, expand=YES)

root.mainloop()  # 开启一个消息循环队列,可以持续不断地接受操作系统发过来的键盘鼠标事件,并作出相应的响应
# mainloop应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件

from tkinter import *

# 定义鼠标事件处理函数


def changeRelief():
    reliefList = ['flat', 'raised', 'sunken', 'groove', 'ridge']
    global reliefIndex
    label.config(relief=reliefList[reliefIndex % len(reliefList)])
    reliefIndex += 1


def changeColor(event):
    colorList = ['red', 'blue', 'yellow']
    global colorIndex
    label.config(fg=colorList[colorIndex % len(colorList)])
    colorIndex += 1


reliefIndex = 0
colorIndex = 0
root = Tk()  # 创建一个主窗体。相当于提供了一个搭积木的桌子

label = Label(root, text="Welcome to python")
button1 = Button(root, text="relief", command=changeRelief)  # 控制label的边界
button2 = Button(root, text="color")  # 控制label的颜色
button2.bind("<Button-1>", changeColor)  # 用bind方法来绑定的话要求函数必须有个参数

label.pack()
button1.pack(side=LEFT, anchor=CENTER, expand=YES)  # 自左向右排列,显示在中间,拓展占满整个空间
button2.pack(side=LEFT, anchor=CENTER, expand=YES)


root.mainloop()  # 开启一个消息循环队列,可以持续不断地接受操作系统发过来的键盘鼠标事件,并作出相应的响应
# mainloop应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件

点击按钮可以改变内容的边框和颜色

键盘改变图形大小

from tkinter import *


def increaseRadius(event):
    global radius
    if radius < 100:
        radius += 2
    canvas.create_oval(100 - radius, 100 - radius,
                       100 + radius, 100 + radius, tags="oval")


def decreaseRadius(event):
    global radius
    if radius > 2:
        radius -= 2
    canvas.create_oval(100 - radius, 100 - radius,
                       100 + radius, 100 + radius, tags="oval")


root = Tk()  # 创建一个主窗体。相当于提供了一个搭积木的桌子

canvas = Canvas(root, bg='white', width=200, height=200)
canvas.bind("<Up>", increaseRadius)
canvas.bind("<Down>", decreaseRadius)
canvas.focus_set()  # 得到键盘事件的焦点

radius = 50
canvas.create_oval(100 - radius, 100 - radius,
                   100 + radius, 100 + radius, tags="oval")  # 指定左上角坐标和右下角坐标
canvas.pack()


root.mainloop()  # 开启一个消息循环队列,可以持续不断地接受操作系统发过来的键盘鼠标事件,并作出相应的响应
# mainloop应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件

from tkinter import *


def increaseRadius(event):
    canvas.delete("oval")
    global radius
    if radius < 100:
        radius += 2
    canvas.create_oval(100 - radius, 100 - radius,
                       100 + radius, 100 + radius, tags="oval")


def decreaseRadius(event):
    canvas.delete("oval")
    global radius
    if radius > 2:
        radius -= 2
    canvas.create_oval(100 - radius, 100 - radius,
                       100 + radius, 100 + radius, tags="oval")


root = Tk()  # 创建一个主窗体。相当于提供了一个搭积木的桌子

canvas = Canvas(root, bg='white', width=200, height=200)
canvas.bind("<Up>", increaseRadius)
canvas.bind("<Down>", decreaseRadius)
canvas.focus_set()  # 得到键盘事件的焦点

radius = 50
canvas.create_oval(100 - radius, 100 - radius,
                   100 + radius, 100 + radius, tags="oval")  # 指定左上角坐标和右下角坐标
canvas.pack()


root.mainloop()  # 开启一个消息循环队列,可以持续不断地接受操作系统发过来的键盘鼠标事件,并作出相应的响应
# mainloop应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件

发布了304 篇原创文章 · 获赞 148 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/hxxjxw/article/details/100087876