一、颜色选择框
颜色选择框可以帮助我们设置背景色、前景色、画笔颜色、字体颜色等等
【示例】颜色选择框的基本用法
"""askcolor颜色选择框的测试,改变背景颜色"""
from tkinter import *
from tkinter.colorchooser import *
root = Tk();root.geometry("400x150")
def test1():
s1 = askcolor(color="red", title="选择背景色")
print(s1)
#s1的值是:((0.0,0.0,255.99609375),‘#0000ff’)
root.config(bg=s1[1])
Button(root,text="选择背景色",command=test1).pack()
root.mainloop()
二、文件对话框
文件对话框可以帮助我们实现可视化的操作目录、操作文件。最后,将文件、目录的信息传入到程序中。文件对话框包含如下一些常用的函数:
函数名 | 对话框 | 说明 |
askopenfilename(**options) | 文件对话框 | 返回打开的文件名 |
askopenfilenames(**options) | 文件对话框 | 返回打开的多个文件名列表 |
askopenfile(**options) | 文件对话框 | 返回打开文件对象 |
askopenfiles(**options) | 文件对话框 | 返回打开的文件对象的列表 |
askdirectory(**options) | 目录对 | 返回目录名 |
命名参数options的常见值如下:
参数名 | 说明 |
defaultextension | 默认后缀: .XXX 用户没有输入则自动添加 |
filetypes=[(label1,pattern1),(label2,pattern2)] | 文件显示过滤器 |
initaldir | 初始目录 |
initalfile | 初始文件 |
parent | 父窗口,默认根窗口 |
title | 窗口标题 |
【示例】
"""文件对话框获取文件"""
from tkinter import *
from tkinter.filedialog import *
root = Tk();root.geometry("400x100")
def test1():
f = askopenfilename(title="上传文件",
initialdir="f:",filetypes=[("视频文件",".mp4")])
#print(f)
show["text"]=f
Button(root,text="选择编辑的视频文件",command=test1).pack()
show = Label(root,width=40,height=3,bg="red")
show.pack()
root.mainloop()
三、简单输入对话框
simpledialog(简单对话框)包含如下常用函数:
函数名 | 说明 |
askfloat(title,prompt,**kw) | 输入并返回浮点数 |
askinteger(title,prompt,**kw) | 输入并返回整数 |
askstring(title,prompt,**kw) | 输入并返回字符串 |
参数中:title表示窗口标题;prompt是提示信息;命名参数kw为各种选项:initialvalue(初始值)、minvalue(最小值)、maxvalue(最大值)。
【示例】简单对话框的基本用法:
"""简单对话框"""
from tkinter import *
from tkinter.simpledialog import *
root = Tk();root.geometry("400x100")
def test1():
a = askinteger(title="输入年龄",prompt="请输入年龄",initialvalue=18,minvalue=1,maxvalue=150)
#askstring、askfloat框使用方式一样
show["text"]=a
Button(root,text="你多大了?请输入",command=test1).pack()
show = Label(root,width=40,height=3,bg="red")
show.pack()
root.mainloop()
四、菜单
GUI程序通常都用菜单,方便用户的交互,我们一般分为两种:
1.主菜单
主菜单通常位于GUI程序的上方。
2.上下文菜单
快捷菜单(上下文菜单)是通过鼠标右键单击组件而弹出的菜单,一般是和这个组件相关的操作,比如:剪切、复制、粘贴、属性等。
"""开发记事本软件的菜单"""
from tkinter import *
from tkinter.filedialog import *
from tkinter.colorchooser import *
class Application(Frame):
def __init__(self,master=None):
super().__init__(master) #super()代表的是父类的定义,而不是父类对象
self.master=master
self.textpad= None #textpad表示Text文本框对象
self.pack()
self.createWidget()
def createWidget(self):
# 创建主菜单栏
menubar = Menu(root)
#创建子菜单
menuFile = Menu(menubar)
menuEdit = Menu(menubar)
menuHelp = Menu(menubar)
#将子菜单加入到主菜单栏
menubar.add_cascade(label="文件(F)", menu=menuFile)
menubar.add_cascade(label="编辑(E)", menu=menuEdit)
menubar.add_cascade(label="帮助(H)", menu=menuHelp)
# 添加菜单栏
menuFile.add_command(label="新建", accelerator="ctrl+n", command=self.test)
menuFile.add_command(label="打开", accelerator="ctrl+o", command=self.test)
menuFile.add_command(label="保存", accelerator="ctrl+s", command=self.test)
menuFile.add_separator() # 添加分割线
menuFile.add_command(label="退出", accelerator="ctrl+q", command=self.test)
#将主菜单栏加到根窗口
root["menu"] = menubar
#文本编辑区
self.textpad = Text(root, width=50, height=30)
self.textpad.pack()
#创建上下菜单
self.contextMenu = Menu(root)
self.contextMenu.add_command(label="背景颜色", command=self.test)
#为右键绑定事件
root.bind("<Button-3>",self.createContextMenu)
def test(self):
pass
def createContextMenu(self,event):
#菜单在鼠标右键单击的坐标处显示
self.contextMenu.post(event.x_root, event.y_root)
if __name__=='__main__':
root = Tk()
root.geometry("450x300+200+300")
root.title("简易记事本")
app = Application(master=root)
root.mainloop()
五、NumPy
NumPy(Numerical Python)是科学计算基础库,提供大量的科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,Numpy支持向量处理ndarray对象,提高程序运算速度。
1.Numpy的安装:
安装Numpy最简单的方法就是使用pip工具,语法格式为:
pip install numpy
【示例】用arange函数测试环境安装
#导入numpy
import numpy as np
#创建数组
a=np.arange(10)
print(a)
六、数组
1.数组的创建
array创建:
语法格式:
numpy.array(object, dtype =None, copy=True, order=None, subok=False,ndmin=0)
【示例】:
#导入numpy
import numpy as np
#使用array函数创建一维数组
a=np.array([1,2,3,4])
print(a)
#使用array函数创建二维数组
b=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(b)
#使用array函数创建三维数组
c=np.array([[[1,2,3],[4,5,6],[7,8,9]]])
print(c)
arange创建:
使用arange函数创建数值范围并返回ndarray对象,函数格式如下:
numpy.arange(start, stop, step, dtype)
参数说明:
参数 | 描述 |
start | 起始值,默认为0 |
stop | 终止值(不包含) |
step | 步长,默认为1 |
dtype | 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型 |
【示例】arange生成 0到 5的数组
#导入numpy
import numpy as np
#range的使用range(start,end,step)
a=list(range(1,10))
print(a)
b=list(range(10)) #默认的是从0开始,步长为1
print(b)
c=list(range(1,10,3))
print(c)
#arange创建数组
#使用arange创建1到10的数组
d=np.arange(1,11)
print(d)
e=np.arange(1,11,2)
print(e)
2.数组的复制
#导入numpy
import numpy as np
#创建一个二维的数组
a=np.arange(1,13).reshape((3,4)) #将一维数组转化为一个二维数组(3行4列)
print(a)
#对a数组进行切片处理,获取第一、二行,第一、二列
sub_a=a[:2,:2]
print(sub_a)
#对sub_a中的第一行第一列的值进行修改
sub_a[0][0]=100
print(sub_a)
print(a)
#通过切片可以获取到新数组,即使赋值给新的变量,但还是原来数组的视图,
#如果对切片数组中元素的值进行修改会影响原来的数组可以使用numpy中的copy方法实现
sub_aa=np.copy(a[:2,:2]) #是深拷贝
sub_aa[0,0]=200
print(sub_aa)
print(a)
3.数组的拼接
水平数组组合:
通过hstack函数可以将两个或多个数组水平组合起来形成一个数组
垂直数组组合:
通过vstack函数可以将两个或多个数组垂直组合起来形成一个数组
数组的拼接:
函数 | 描述 |
concatenate | 连接沿现有轴的数组序列 |
hstack | 水平堆叠序列中的数组(列方向) |
vstack | 竖直堆叠序列中的数组(行方向) |
numpy.concatenate 函数用于沿指定轴连接相向形状的两个或多个数组,格式如下:
numpy.concatenate((a1,a2,....), axis)
【示例】
#导入numpy
import numpy as np
#创建两个数组
a=np.array([[1,2,3],[4,5,6]])
b=np.array([[11,12,13],[14,15,16]])
#使用hstack进行水平拼接
r=np.hstack((a,b))
print(r)
#使用vstack进行垂直拼接
s=np.vstack((a,b))
print(s)
#concatenate的使用
q=np.concatenate((a,b),axis=0) #当axis=0时,为默认情况,相当于垂直方向拼接,相当于vstack
print(q)
#二维数组有两个轴,axis=0 axis=1
p=np.concatenate((a,b),axis=1)
print(p)