python Tkinter模块使用方法详解


Posted in Python onApril 07, 2022
目录

一、前言

1.1、Tkinter是什么

Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python自带的,可以编辑的GUI界面,用来入门,熟悉窗口视窗的使用,非常有必要。

二、准备工作

2.1、Windows演示环境搭建

  • 安装python3.7
  • 安装编辑器,演示使用的Visual Studio Code

三、Tkinter创建窗口

3.1、创建出一个窗口

首先我们导入tkinter的库

import tkinter as tk  # 在代码里面导入库,起一个别名,以后代码里面就用这个别名
root = tk.Tk()  # 这个库里面有Tk()这个方法,这个方法的作用就是创建一个窗口

如果只是执行以上的两句代码,运行程序是没有反应的,因为只有一个主函数,从上到下执行完就没有了,这个窗口也是很快就消失了,所以现在我们要做的就是让窗口一直显示,那么我们就可以加一个循环

创建的窗口的名字是root ,那么我们之后使用这个root就可以操作这个窗口了。

root.mainloop()  # 加上这一句,就可以看见窗口了

执行以上的3句代码,我们就可以看见窗口了

python Tkinter模块使用方法详解

3.2、给窗口取一个标题

root.title('演示窗口')

python Tkinter模块使用方法详解

3.3、窗口设置

通过以下代码,我们可以给窗口设置长宽以及窗口在屏幕的位置

root.geometry("300x100+630+80")  # 长x宽+x*y

python Tkinter模块使用方法详解

3.3、创建按钮,并且给按钮添加点击事件

这个库里面有一个方法Button(),只要调用这个方法,我们就可以创建这个组件,创建的这个组件我们赋值给一个常量,以后我们就可以用这个常量来操作这个按钮,这个方法里面的参数,就是要我们写窗口的名字

Button(root) 这样写的意思就是 将我们创建的按钮放到这个窗口上面

btn1 = tk.Button(root)

给按钮取一个名称

btn1["text"] = "点击"

我们创建的按钮组件,已经放到窗口里面了,但是放到窗口的哪个位置,东南西北哪个地方,我们就可以用pack()去定位(后面会介绍其它定位方法)

btn1.pack()  # 按钮在窗口里面的定位

创建点击按钮事件的弹窗,先导入messagebox,这个必须单独导入

from tkinter import messagebox
def test(e):
    messagebox.showinfo("窗口名称","点击成功")

现在有了按钮,有了方法,我想要做的是一点击按钮,就执行这个方法,那么就需要将按钮和方法进行绑定

btn1.bind("<Button-1>",test) #第一个参数为:按鼠标左键的事件 第二个参数为:要执行的方法的名字

按钮组件里面有一个方法bind() 这个方法就可以实现绑定

完整代码

import tkinter as tk
from tkinter import messagebox
root = tk.Tk()  # 创建窗口
root.title('演示窗口')
root.geometry("300x100+630+80")  # 长x宽+x*y

btn1 = tk.Button(root)  # 创建按钮,并且将按钮放到窗口里面
btn1["text"] = "点击"  # 给按钮一个名称
btn1.pack()  # 按钮布局

def test(e):
    '''创建弹窗'''
    messagebox.showinfo("窗口名称", "点击成功")

btn1.bind("<Button-1>", test)  # 将按钮和方法进行绑定,也就是创建了一个事件
root.mainloop()  # 让窗口一直显示,循环

python Tkinter模块使用方法详解

3.4、窗口内的组件布局

3种布局管理器:pack - grid - place

pack 
这个布局管理器,要么将组件垂直的排列,要么水平的排列

grid 
Grid(网格)布局管理器会将控件放置到一个二维的表格里。
主控件被分割成一系列的行和列,表格中的每个单元(cell)都可以放置一个控件。

选项 说明
column 单元格的列号,从0开始的正整数
columnspan 跨列,跨越的列数,正整数
row 单元格的行号, 从0开始的正整数
rowspan 跨行,跨越的行数,正整数
ipadx, ipady 设置子组件之间的间隔,x方向或y方向,默认单位为像素,非浮点数,默认0.0
padx, pady 与之并列的组件之间的间隔,x方向或y方向,默认单位为像素,非浮点数,默认0.0
sticky 组件紧贴所在的单元格的某一脚,对应于东南西北中以及4个角。东 = “e”,南=“s”,西=“w”,北=“n”,“ne”,“se”,“sw”, “nw”;

grid_info() 查看组件默认的参数

import tkinter as tk
root = tk.Tk()

# 默认按钮
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid()
print(btn1.grid_info())

root.title('演示窗口')
root.geometry("300x150+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

column 指定控件所在的列

import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(column=0)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(column=1)


root.title('演示窗口')
root.geometry("300x100+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

  • columnspan 指定每个控件横跨的列数
  • 什么是columnspan?

类似excel的合并单元格

python Tkinter模块使用方法详解

a占了两个格子的宽度,colunmspan就是2

```python
import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(column=0, columnspan=2)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(column=1, columnspan=1)


root.title('演示窗口')
root.geometry("300x100+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

row 指定控件所在的行

import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(row=0)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(row=1)

# 按钮3
btn3 = tk.Button(root)
btn3["text"] = "按钮2"
btn3.grid(row=2)


root.title('演示窗口')
root.geometry("300x100+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

  • rowspan 指定每个控件横跨的行数
  • 什么是rowspan ?

类似excel的合并单元格

python Tkinter模块使用方法详解

a占了两个格子的高度,rowspan就是2

import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(row=0, rowspan=2)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(row=2, rowspan=1)

root.title('演示窗口')
root.geometry("300x100+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

ipadx 水平方向内边距

import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(ipadx=20)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(ipadx=5)

root.title('演示窗口')
root.geometry("300x100+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

ipady 垂直方向内边距

import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(ipady=20)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(ipady=5)

root.title('演示窗口')
root.geometry("300x150+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

padx 水平方向外边距

import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(padx=50)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(column=1, padx=20)

root.title('演示窗口')
root.geometry("300x150+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

pady 垂直方向外边距

import tkinter as tk
root = tk.Tk()

# 按钮1
btn1 = tk.Button(root)
btn1["text"] = "按钮1"
btn1.grid(pady=30)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(pady=20)

root.title('演示窗口')
root.geometry("300x150+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

sticky 组件东南西北的方向

import tkinter as tk
root = tk.Tk()

# 默认按钮
btn1 = tk.Button(root)
btn1["text"] = "默认按钮演示效果"
btn1.grid(ipadx=50)

# 按钮2
btn2 = tk.Button(root)
btn2["text"] = "按钮2"
btn2.grid(row=1, sticky="w")

# 按钮3
btn3 = tk.Button(root)
btn3["text"] = "按钮3"
btn3.grid(row=1, sticky="e")

root.title('演示窗口')
root.geometry("300x150+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

place布局管理器
place布局管理器可以通过坐标精确控制组件的位置,适用于一些布局更加灵活的场景

选项 说明
x,y 组件左上角的绝对坐标(相当于窗口)
relx ,rely 组件左上角的坐标(相对于父容器)
width , height 组件的宽度和高度
relwidth , relheight 组件的宽度和高度(相对于父容器)
anchor 对齐方式,左对齐“w”,右对齐“e”,顶对齐“n”,底对齐“s”
import tkinter as tk
root = tk.Tk()

but1 = tk.Button(root, text="按钮1")
but1.place(relx=0.2, x=100, y=20, relwidth=0.2, relheight=0.5)

root.title('演示窗口')
root.geometry("300x150+1000+300")
root.mainloop()

python Tkinter模块使用方法详解

四、Tkinter基本控件介绍

4.1、封装

import tkinter as tk

class GUI:

    def __init__(self):
        self.root = tk.Tk()
        self.root.title('演示窗口')
        self.root.geometry("500x200+1100+150")
        self.interface()

    def interface(self):
        """"界面编写位置"""
        pass

if __name__ == '__main__':
    a = GUI()
    a.root.mainloop()

4.2、文本显示_Label

def interface(self):
        """"界面编写位置"""
        self.Label0 = tk.Label(self.root, text="文本显示")
        self.Label0.grid(row=0, column=0)

4.3、按钮显示_Button

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="按钮显示")
        self.Button0.grid(row=0, column=0)

4.4、输入框显示_Entry

def interface(self):
        """"界面编写位置"""
        self.Entry0 = tk.Entry(self.root)
        self.Entry0.grid(row=0, column=0)

4.5、文本输入框显示_Text

# pack布局
    def interface(self):
        """"界面编写位置"""
        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.pack(pady=0, padx=30)
# grid布局
    def interface(self):
        """"界面编写位置"""
        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=1, column=0)

4.6、复选按钮_Checkbutton

def interface(self):
        """"界面编写位置"""
        self.Checkbutton01 = tk.Checkbutton(self.root, text="名称")
        self.Checkbutton01.grid(row=0, column=2)

4.7、单选按钮_Radiobutton

def interface(self):
        """"界面编写位置"""
        self.Radiobutton01 = tk.Radiobutton(self.root, text="名称")
        self.Radiobutton01.grid(row=0, column=2)

五、组件使用方法介绍

5.1、按钮(Button)绑定事件

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="运行", command=self.event)
        self.Button0.grid(row=0, column=0)
        
		self.Button1 = tk.Button(self.root, text="退出", command=self.root.destroy, bg="Gray")  # bg=颜色
        self.Button1.grid(row=0, column=1, sticky="e", ipadx=10)

    def event(self):
        """按钮事件"""
        print("运行成功")

5.2、输入框(Entry)内容获取

def interface(self):
        """"界面编写位置"""
        self.entry00 = tk.StringVar()
        self.entry00.set("默认信息")

        self.entry0 = tk.Entry(self.root, textvariable=self.entry00)
        self.entry0.grid(row=1, column=0)

        self.Button0 = tk.Button(self.root, text="运行", command=self.event)
        self.Button0.grid(row=0, column=0)

    def event(self):
        """按钮事件,获取文本信息"""
        a = self.entry00.get()
        print(a)

5.2、文本输入框(Text),写入文本信息和清除文本信息

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="清除", command=self.event)
        self.Button0.grid(row=0, column=0)

        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=1, column=0)
        self.w1.insert("insert", "默认信息")

    def event(self):
        '''清空输入框'''
        self.w1.delete(1.0, "end")

5.3、获取复选按钮(Checkbutton)的状态

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="确定", command=self.event)
        self.Button0.grid(row=0, column=0)

        self.v1 = tk.IntVar()
        self.Checkbutton01 = tk.Checkbutton(self.root, text="复选框", command=self.Check_box, variable=self.v1)
        self.Checkbutton01.grid(row=1, column=0)

        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=2, column=0)

    def event(self):
        '''按钮事件,获取复选框的状态,1表示勾选,0表示未勾选'''
        a = self.v1.get()
        self.w1.insert(1.0, str(a)+'\n')

    def Check_box(self):
        '''复选框事件'''
        if self.v1.get() == 1:
            self.w1.insert(1.0, "勾选"+'\n')
        else:
            self.w1.insert(1.0, "未勾选"+'\n')

5.4、清除控件

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="确定", command=self.event)
        self.Button0.grid(row=0, column=0)

        self.Label0 = tk.Label(self.root, text="文本显示")
        self.Label0.grid(row=1, column=0)

        self.Entry0 = tk.Entry(self.root)
        self.Entry0.grid(row=2, column=0)

        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=3, column=0)

    def event(self):
        '''按钮事件,清除Label、Entry、Text组件'''
        a = [self.Label0, self.Entry0, self.w1]
        for i in a:
            i.grid_forget()

5.5、清除复选框勾选状态

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="确定", command=self.event)
        self.Button0.grid(row=0, column=0)

        self.v1 = tk.IntVar()
        self.Checkbutton01 = tk.Checkbutton(self.root, text="复选框", command=self.Check_box, variable=self.v1)
        self.Checkbutton01.grid(row=1, column=0)

        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=2, column=0)

    def event(self):
        '''按钮事件,清除复选框勾选状态'''
        self.Checkbutton01.deselect()

    def Check_box(self):
        '''复选框事件'''
        if self.v1.get() == 1:
            self.w1.insert(1.0, "勾选"+'\n')
        else:
            self.w1.insert(1.0, "未勾选"+'\n')

5.6、文本框(Text)内容获取

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="确定", command=self.event)
        self.Button0.grid(row=0, column=0)

        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=1, column=0)

    def event(self):
        a = self.w1.get('0.0', 'end')
        print(a)

六、Tkinter使用多线程

6.1、为什么要使用多线程

以下为单线程运行

def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="确定", command=self.event)
        self.Button0.grid(row=0, column=0)

        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=1, column=0)

    def event(self):
        '''按钮事件,一直循环'''
        a = 0
        while True:
            a += 1
            self.w1.insert(1.0, str(a)+'\n')

单线程下,主线程需要运行窗口,如果这个时候点击“确定”按钮,主线程就会去执行event方法,那界面就会出现“无响应”状态,如果要界面正常显示,那我们就需要用到多线程(threading)

python Tkinter模块使用方法详解

多线程,完整代码

import tkinter as tk
import threading  # 导入多线程模块

class GUI:

    def __init__(self):
        self.root = tk.Tk()
        self.root.title('演示窗口')
        self.root.geometry("500x200+1100+150")
        self.interface()

    def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="确定", command=self.start)
        self.Button0.grid(row=0, column=0)

        self.w1 = tk.Text(self.root, width=80, height=10)
        self.w1.grid(row=1, column=0)

    def event(self):
        '''按钮事件,一直循环'''
        a = 0
        while True:
            a += 1
            self.w1.insert(1.0, str(a)+'\n')

    def start(self):
        self.T = threading.Thread(target=self.event)  # 多线程
        self.T.setDaemon(True)  # 线程守护,即主进程结束后,此线程也结束。否则主进程结束子进程不结束
        self.T.start()  # 启动

if __name__ == '__main__':
    a = GUI()
    a.root.mainloop()

python Tkinter模块使用方法详解

七、Tkinter多线程暂停和继续

import tkinter as tk
import threading
from time import sleep

event = threading.Event()

class GUI:

    def __init__(self):
        self.root = tk.Tk()
        self.root.title('演示窗口')
        self.root.geometry("500x200+1100+150")
        self.interface()

    def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="启动", command=self.start)
        self.Button0.grid(row=0, column=0)

        self.Button0 = tk.Button(self.root, text="暂停", command=self.stop)
        self.Button0.grid(row=0, column=1)

        self.Button0 = tk.Button(self.root, text="继续", command=self.conti)
        self.Button0.grid(row=0, column=2)

        self.w1 = tk.Text(self.root, width=70, height=10)
        self.w1.grid(row=1, column=0, columnspan=3)

    def event(self):
        '''按钮事件,一直循环'''
        while True:
            sleep(1)
            event.wait()
            self.w1.insert(1.0, '运行中'+'\n')

    def start(self):
        event.set()
        self.T = threading.Thread(target=self.event)
        self.T.setDaemon(True)
        self.T.start()

    def stop(self):
        event.clear()
        self.w1.insert(1.0, '暂停'+'\n')

    def conti(self):
        event.set()
        self.w1.insert(1.0, '继续'+'\n')

if __name__ == '__main__':
    a = GUI()
    a.root.mainloop()

八、Tkinter文件之间的调用

8.1、准备工作

  • a.py文件 - -界面逻辑+线程
  • b.py 文件 - -业务逻辑
  • 以上文件在同一个目录下

8.2、方法

# a.py 文件
import tkinter as tk
import threading
from b import logic  # 调用b文件中的logic类

class GUI:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('演示窗口')
        self.root.geometry("500x260+1100+150")
        self.interface()

    def interface(self):
        """"界面编写位置"""
        self.Button0 = tk.Button(self.root, text="确定执行", command=self.start, bg="#7bbfea")
        self.Button0.grid(row=0, column=1, pady=10)

        self.entry00 = tk.StringVar()
        self.entry00.set("")

        self.entry0 = tk.Entry(self.root, textvariable=self.entry00)
        self.entry0.grid(row=1, column=1, pady=15)

        self.w1 = tk.Text(self.root, width=50, height=8)
        self.w1.grid(row=2, column=0, columnspan=3, padx=60)

    def seal(self):
        '''把b文件的类单独写一个方法'''
        a = self.entry00.get()
        w1 = self.w1
        logic().event(a, w1)

    def start(self):
        '''子线程无法直接执行b的类,需要把b文件单独写一个方法,然后执行'''
        self.T = threading.Thread(target=self.seal)
        self.T.setDaemon(True)
        self.T.start()

if __name__ == '__main__':
    a = GUI()
    a.root.mainloop()
# b.py 文件
import time
class logic():
    def __init__(self):
        pass

    def main(self, a, x):
        while True:
            y = int(a)+int(x)
            self.w1.insert(1.0, str(y)+'\n')
            time.sleep(1)
            x += 1

    def event(self, a, w1):
        '''调用main的方法'''
        self.w1 = w1
        x = 1
        self.main(a, x)

总结

到此这篇关于python Tkinter模块使用的文章就介绍到这了,更多相关python Tkinter使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
初学Python实用技巧两则
Aug 29 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
用python实现将数组元素按从小到大的顺序排列方法
Jul 02 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python匿名函数用法实例分析
Aug 03 Python
Python collections模块使用方法详解
Aug 28 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
Python脚本调试工具安装过程
Jan 11 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
一行Python命令实现批量加水印
Apr 07 #Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
详解Python中*args和**kwargs的使用
Apr 07 #Python
Python列表的索引与切片
Apr 07 #Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
You might like
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python实现批量下载文件
2015/05/17 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python文件操作的简单方法总结
2019/11/07 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
什么是聚集索引和非聚集索引
2012/01/17 面试题
高三体育教学反思
2014/01/29 职场文书
庆六一开幕词
2015/01/29 职场文书
家长对孩子的寄语
2015/02/26 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
童年读书笔记
2015/06/26 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python