图形用户接口(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应该放在所有代码的最后一行,执行他之后图形界面才会显示并响应系统的各种事件
python图形用户接口(GUI)
猜你喜欢
转载自blog.csdn.net/hxxjxw/article/details/100087876
今日推荐
周排行