嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 5 元微信扫码支付:5 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
tkinter做的IDE,超级牛!(thonny)
青少儿编程教育的三大语言,图形化编程、Python编程和C 语言编程。图形化语言(Scratch)和C 语言(Dev C )的编程工具相对比较固定,而Python编程工具比较多样,像比较入门的Mu Editor,项目在用的Pycharm、Pydev等等,每个编程工具都有自己的特点和优势,同样也有自己的不足,没有什么万能的工具,只有针对使用场景更适合的工具。那么针对于青少年学习Python,更适合的是什么学习编程工具呢?
青少年的编程工具要有几个特点:
- 简单入手,直观易用。
- 交互直观,即时反馈。
- 不光是用编程,作出编程项目,还要有利于弄懂编程过程及原理。
- 更有利于向更高级复杂的工具顺利过渡。
比较了很多编辑器之后,最终选定,更适合青少年的可能就是它了-Thonny。
Thonny 由爱沙尼亚的 Tartu 大学开发,它的调试器是专为学习和教学编程而设计的,针对初学者学习Python语言优化了很多工具上的方式和方法,下面就是典型的使用Thonny时的界面。
Thonny界面
选择Thonny作为更适合青少年学习Python的软件,它针对青少年学习有以下几个亮点:
- 开箱即用,简单上手。
Thonny有Windows、Mac、Linux和树莓派等各平台版本,下载后直接安装即可使用。首次打开软件,可以选择语言,自带中文。Thonny在安装时就自带了Python3的解释器,不用再折腾Python的环境,就可以马上打开软件开始写代码。这对于青少年来说降低了很多写“Hello World“的门槛,把更多的精力用在学习编程语言和做编程作品上。
- 实时反馈程序运行过程,调试时显示变量值和函数调用过程。
调试的时候显示变量的值。例如在循环运行的过程中,可以在代码中直接高亮显示当前变量的值,让学生更容易了解变量的变化和计算过程。更直观的让学生理解循环及变量。
调试时,直观显示函数的调用过程。例如在递归的算法中,学生经常被循环调用函数搞糊涂,Thonny在调用函数时,直接弹出调用函数窗口,显示当前的调用参数是多少,返回值多少,直观的让学生了解函数时如何调用的及算法过程。
函数调用过程窗口- 支持REPL交互。
REPL是解释语言的优势,在交互中探索编程,这就像Scratch图形化中单个运行的积木模块,可以实时反馈交互的运行结果。Thonny默认界面Shell中随时等待用户输入命令用于编程。特别是Thonny的界面就是IDLE命令行模式和写代码模式的组合体。上半部分的代码编辑器可以写大块的程序用于运行,下面是命令行用于小段代码测试。这给学生一个自由的创作空间,而不是两者取舍。
Mu Editor也有Shell窗口,但在REPL过程中用了In、Out这样的提示符,感觉不太干净利落。特别是在程序出错时,Mu Editor只打印相关的错误信息,Thonny可以直接点击错误信息,直接到达错误行,直接修改程序即可。
- 简单易用的包管理器。
Mu Editor的分模式窗口也是非常好的一个亮点,但是最终让我不选择Mu Editor的是它的包管理器。个人感觉Mu Editor的包管理器还不够好,缺少了“搜索”这一步骤。Thonny的包管理器可以图形化的搜索第三方包,然后进行加载并管理。这对于Python学习的特点之一(可以使用成千上万的优秀第三方包)来说,这一点能培养学生自己扩展和使用第三方包的能力,用于自主创新和实践。
- 更好的支持Microbit等硬件开发。
Thonny也良好的支持Microbit、ESP32和树莓派等的开发。在Python的解释器中选择不同的解释器,Thonny就会自动切换不同的开发模式,以方便当前硬件的开发。
- 承上启下,顺利向PyCharm等复杂编辑器过渡。
Thonny不仅简单易用,还有很多复杂编辑器的功能,比如项目文件管理、输出图形化展示器、大纲显示函数、异常处理等等功能。这对以后可以顺利过渡到Pycharm这样的软件做了一个很好的铺垫。
Thonny还有其他一些小的优化点:
- 针对Turtle的优化。自带Turtle,可以直接引用并窗口显示绘制的图形,绘制图形窗口还可以固定位置和最前显示,方便一边调试一边显示。
- 变量作用域用不同的字体显示。局部变量用斜体显示,让学生更好的区分变量的作用域。
- 显示堆模式。这个模式也非常好,打开堆窗口,自动切换到堆模式,引用变量显示的不再是具体的值,而是内存地址。堆模式可以让学生直观理解引用内存地址,实参和形参的区别。
- 简单UI模式。在设置中,可以用Simple UI模式,只剩下工具栏、代码编辑器和Shell,简洁界面让学生无压力,更聚焦编程语言的学习。
Thonny针对学习Python(而不仅仅是用Python)而设计的诸多优化点,更好的让学生理解代码运行、深入计算机交互和使用语言完成任务。
Thonny官网:Thonny, Python IDE for beginners
使用方法: 运行__main__.py
.
├── thonny
│ ├── VERSION
│ ├── __init__.py
│ ├── __main__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-39.pyc
│ │ ├── __main__.cpython-39.pyc
│ │ ├── assistance.cpython-39.pyc
│ │ ├── ast_utils.cpython-39.pyc
│ │ ├── backend.cpython-39.pyc
│ │ ├── base_file_browser.cpython-39.pyc
│ │ ├── codeview.cpython-39.pyc
│ │ ├── common.cpython-39.pyc
│ │ ├── config.cpython-39.pyc
│ │ ├── config_ui.cpython-39.pyc
│ │ ├── editors.cpython-39.pyc
│ │ ├── export.cpython-39.pyc
│ │ ├── first_run.cpython-39.pyc
│ │ ├── gridtable.cpython-39.pyc
│ │ ├── jedi_utils.cpython-39.pyc
│ │ ├── languages.cpython-39.pyc
│ │ ├── memory.cpython-39.pyc
│ │ ├── misc_utils.cpython-39.pyc
│ │ ├── roughparse.cpython-39.pyc
│ │ ├── rst_utils.cpython-39.pyc
│ │ ├── running.cpython-39.pyc
│ │ ├── shell.cpython-39.pyc
│ │ ├── terminal.cpython-39.pyc
│ │ ├── tktextext.cpython-39.pyc
│ │ ├── token_utils.cpython-39.pyc
│ │ ├── ui_utils.cpython-39.pyc
│ │ ├── workbench.cpython-39.pyc
│ │ └── workdlg.cpython-39.pyc
│ ├── assistance.py
│ ├── ast_utils.py
│ ├── backend.py
│ ├── base_file_browser.py
│ ├── codeview.py
│ ├── common.py
│ ├── config.py
│ ├── config_ui.py
│ ├── defaults.ini
│ ├── editors.py
│ ├── export.py
│ ├── first_run.py
│ ├── gridtable.py
│ ├── jedi_utils.py
│ ├── languages.py
│ ├── locale
│ │ ├── compile_mo.bat
│ │ ├── cs_CZ
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── de_DE
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── el_GR
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── en_US
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── es_ES
│ │ │ ├── HELP_CONTENT
│ │ │ │ ├── debuggers.rst
│ │ │ │ ├── debugging.rst
│ │ │ │ └── errors.rst
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── et_EE
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── fa_IR
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── fi_FI
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── fr_FR
│ │ │ ├── HELP_CONTENT
│ │ │ │ ├── birdseye.rst
│ │ │ │ ├── debuggers.rst
│ │ │ │ ├── debugging.rst
│ │ │ │ ├── dock.rst
│ │ │ │ ├── errors.rst
│ │ │ │ ├── flask.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── modes.rst
│ │ │ │ ├── packages.rst
│ │ │ │ ├── plotter.rst
│ │ │ │ ├── program_arguments.rst
│ │ │ │ ├── shell.rst
│ │ │ │ └── turtle.rst
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── hu_HU
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── hy_AM
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── it_IT
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── ja_JP
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── ko_KR
│ │ │ ├── HELP_CONTENT
│ │ │ │ ├── birdseye.rst
│ │ │ │ ├── debuggers.rst
│ │ │ │ ├── debugging.rst
│ │ │ │ ├── dock.rst
│ │ │ │ ├── errors.rst
│ │ │ │ ├── flask.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── modes.rst
│ │ │ │ ├── packages.rst
│ │ │ │ ├── plotter.rst
│ │ │ │ ├── program_arguments.rst
│ │ │ │ ├── shell.rst
│ │ │ │ └── turtle.rst
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── lt_LT
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── nb_NO
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── nl_NL
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── nn_NO
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── pl_PL
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── pt_BR
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── pt_PT
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── ro_RO
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── ru_RU
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── sk_SK
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── sq_AL
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── sv_SE
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── thonny.pot
│ │ ├── tr_TR
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── uk_UA
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ ├── update_pot.bat
│ │ ├── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ ├── thonny.mo
│ │ │ └── thonny.po
│ │ └── zh_TW
│ │ └── LC_MESSAGES
│ │ ├── thonny.mo
│ │ └── thonny.po
│ ├── memory.py
│ ├── misc_utils.py
│ ├── plugins
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ ├── __init__.cpython-39.pyc
│ │ │ ├── about.cpython-39.pyc
│ │ │ ├── assistant_config_page.cpython-39.pyc
│ │ │ ├── ast_view.cpython-39.pyc
│ │ │ ├── autocomplete.cpython-39.pyc
│ │ │ ├── backend_config_page.cpython-39.pyc
│ │ │ ├── base_syntax_themes.cpython-39.pyc
│ │ │ ├── base_ui_themes.cpython-39.pyc
│ │ │ ├── birdseye_frontend.cpython-39.pyc
│ │ │ ├── cells.cpython-39.pyc
│ │ │ ├── clean_ui_themes.cpython-39.pyc
│ │ │ ├── coloring.cpython-39.pyc
│ │ │ ├── commenting_indenting.cpython-39.pyc
│ │ │ ├── common_editing_commands.cpython-39.pyc
│ │ │ ├── debugger.cpython-39.pyc
│ │ │ ├── dock_user_windows_frontend.cpython-39.pyc
│ │ │ ├── editor_config_page.cpython-39.pyc
│ │ │ ├── event_logging.cpython-39.pyc
│ │ │ ├── event_view.cpython-39.pyc
│ │ │ ├── files.cpython-39.pyc
│ │ │ ├── find_replace.cpython-39.pyc
│ │ │ ├── general_config_page.cpython-39.pyc
│ │ │ ├── goto_definition.cpython-39.pyc
│ │ │ ├── heap.cpython-39.pyc
│ │ │ ├── highlight_names.cpython-39.pyc
│ │ │ ├── locals_marker.cpython-39.pyc
│ │ │ ├── misc_analyzers.cpython-39.pyc
│ │ │ ├── notes.cpython-39.pyc
│ │ │ ├── object_inspector.cpython-39.pyc
│ │ │ ├── outline.cpython-39.pyc
│ │ │ ├── paren_matcher.cpython-39.pyc
│ │ │ ├── pgzero_frontend.cpython-39.pyc
│ │ │ ├── pip_gui.cpython-39.pyc
│ │ │ ├── remove_old_data_dir.cpython-39.pyc
│ │ │ ├── replayer.cpython-39.pyc
│ │ │ ├── run_debug_config_page.cpython-39.pyc
│ │ │ ├── shell_config_page.cpython-39.pyc
│ │ │ ├── shell_macro.cpython-39.pyc
│ │ │ ├── statement_boxes.cpython-39.pyc
│ │ │ ├── stdlib_error_helpers.cpython-39.pyc
│ │ │ ├── terminal_config_page.cpython-39.pyc
│ │ │ ├── theme_and_font_config_page.cpython-39.pyc
│ │ │ ├── thonny_folders.cpython-39.pyc
│ │ │ ├── tomorrow_syntax_theme.cpython-39.pyc
│ │ │ └── variables.cpython-39.pyc
│ │ ├── about.py
│ │ ├── assistant_config_page.py
│ │ ├── ast_view.py
│ │ ├── autocomplete.py
│ │ ├── backend
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ ├── birdseye_backend.cpython-39.pyc
│ │ │ │ ├── dock_user_windows_backend.cpython-39.pyc
│ │ │ │ ├── flask_backend.cpython-39.pyc
│ │ │ │ ├── matplotlib_backend.cpython-39.pyc
│ │ │ │ └── pgzero_backend.cpython-39.pyc
│ │ │ ├── birdseye_backend.py
│ │ │ ├── dock_user_windows_backend.py
│ │ │ ├── flask_backend.py
│ │ │ ├── matplotlib_backend.py
│ │ │ └── pgzero_backend.py
│ │ ├── backend_config_page.py
│ │ ├── base_syntax_themes.py
│ │ ├── base_ui_themes.py
│ │ ├── birdseye_frontend.py
│ │ ├── cells.py
│ │ ├── circuitpython
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ └── cirpy_backend.cpython-39.pyc
│ │ │ └── cirpy_backend.py
│ │ ├── clean_ui_themes.py
│ │ ├── coloring.py
│ │ ├── commenting_indenting.py
│ │ ├── common_editing_commands.py
│ │ ├── cpython
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ ├── __main__.cpython-39.pyc
│ │ │ │ └── cpython_backend.cpython-39.pyc
│ │ │ └── cpython_backend.py
│ │ ├── cpython_ssh
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ ├── __main__.cpython-39.pyc
│ │ │ │ └── ssh_cpython_backend.cpython-39.pyc
│ │ │ └── ssh_cpython_backend.py
│ │ ├── debugger.py
│ │ ├── dock_user_windows_frontend.py
│ │ ├── editor_config_page.py
│ │ ├── esp
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-39.pyc
│ │ │ └── esp32_api_stubs
│ │ │ ├── __pycache__
│ │ │ │ ├── _boot.cpython-39.pyc
│ │ │ │ ├── _onewire.cpython-39.pyc
│ │ │ │ ├── _thread.cpython-39.pyc
│ │ │ │ ├── _webrepl.cpython-39.pyc
│ │ │ │ ├── apa106.cpython-39.pyc
│ │ │ │ ├── array.cpython-39.pyc
│ │ │ │ ├── binascii.cpython-39.pyc
│ │ │ │ ├── btree.cpython-39.pyc
│ │ │ │ ├── builtins.cpython-39.pyc
│ │ │ │ ├── cmath.cpython-39.pyc
│ │ │ │ ├── collections.cpython-39.pyc
│ │ │ │ ├── dht.cpython-39.pyc
│ │ │ │ ├── ds18x20.cpython-39.pyc
│ │ │ │ ├── errno.cpython-39.pyc
│ │ │ │ ├── esp.cpython-39.pyc
│ │ │ │ ├── esp32.cpython-39.pyc
│ │ │ │ ├── flashbdev.cpython-39.pyc
│ │ │ │ ├── framebuf.cpython-39.pyc
│ │ │ │ ├── gc.cpython-39.pyc
│ │ │ │ ├── hashlib.cpython-39.pyc
│ │ │ │ ├── heapq.cpython-39.pyc
│ │ │ │ ├── inisetup.cpython-39.pyc
│ │ │ │ ├── io.cpython-39.pyc
│ │ │ │ ├── json.cpython-39.pyc
│ │ │ │ ├── machine.cpython-39.pyc
│ │ │ │ ├── math.cpython-39.pyc
│ │ │ │ ├── micropython.cpython-39.pyc
│ │ │ │ ├── neopixel.cpython-39.pyc
│ │ │ │ ├── network.cpython-39.pyc
│ │ │ │ ├── ntptime.cpython-39.pyc
│ │ │ │ ├── onewire.cpython-39.pyc
│ │ │ │ ├── os.cpython-39.pyc
│ │ │ │ ├── random.cpython-39.pyc
│ │ │ │ ├── re.cpython-39.pyc
│ │ │ │ ├── select.cpython-39.pyc
│ │ │ │ ├── socket.cpython-39.pyc
│ │ │ │ ├── ssl.cpython-39.pyc
│ │ │ │ ├── struct.cpython-39.pyc
│ │ │ │ ├── sys.cpython-39.pyc
│ │ │ │ ├── time.cpython-39.pyc
│ │ │ │ ├── ubinascii.cpython-39.pyc
│ │ │ │ ├── ucollections.cpython-39.pyc
│ │ │ │ ├── uctypes.cpython-39.pyc
│ │ │ │ ├── uerrno.cpython-39.pyc
│ │ │ │ ├── uhashlib.cpython-39.pyc
│ │ │ │ ├── uheapq.cpython-39.pyc
│ │ │ │ ├── uio.cpython-39.pyc
│ │ │ │ ├── ujson.cpython-39.pyc
│ │ │ │ ├── uos.cpython-39.pyc
│ │ │ │ ├── upip.cpython-39.pyc
│ │ │ │ ├── upip_utarfile.cpython-39.pyc
│ │ │ │ ├── upysh.cpython-39.pyc
│ │ │ │ ├── urandom.cpython-39.pyc
│ │ │ │ ├── ure.cpython-39.pyc
│ │ │ │ ├── urequests.cpython-39.pyc
│ │ │ │ ├── uselect.cpython-39.pyc
│ │ │ │ ├── usocket.cpython-39.pyc
│ │ │ │ ├── ussl.cpython-39.pyc
│ │ │ │ ├── ustruct.cpython-39.pyc
│ │ │ │ ├── utime.cpython-39.pyc
│ │ │ │ ├── utimeq.cpython-39.pyc
│ │ │ │ ├── uzlib.cpython-39.pyc
│ │ │ │ ├── webrepl.cpython-39.pyc
│ │ │ │ ├── webrepl_setup.cpython-39.pyc
│ │ │ │ ├── websocket.cpython-39.pyc
│ │ │ │ ├── websocket_helper.cpython-39.pyc
│ │ │ │ └── zlib.cpython-39.pyc
│ │ │ ├── _boot.py
│ │ │ ├── _onewire.py
│ │ │ ├── _thread.py
│ │ │ ├── _webrepl.py
│ │ │ ├── apa106.py
│ │ │ ├── array.py
│ │ │ ├── binascii.py
│ │ │ ├── btree.py
│ │ │ ├── builtins.py
│ │ │ ├── cmath.py
│ │ │ ├── collections.py
│ │ │ ├── dht.py
│ │ │ ├── ds18x20.py
│ │ │ ├── errno.py
│ │ │ ├── esp.py
│ │ │ ├── esp32.py
│ │ │ ├── flashbdev.py
│ │ │ ├── framebuf.py
│ │ │ ├── gc.py
│ │ │ ├── hashlib.py
│ │ │ ├── heapq.py
│ │ │ ├── inisetup.py
│ │ │ ├── io.py
│ │ │ ├── json.py
│ │ │ ├── machine.py
│ │ │ ├── math.py
│ │ │ ├── micropython.py
│ │ │ ├── neopixel.py
│ │ │ ├── network.py
│ │ │ ├── ntptime.py
│ │ │ ├── onewire.py
│ │ │ ├── os.py
│ │ │ ├── random.py
│ │ │ ├── re.py
│ │ │ ├── select.py
│ │ │ ├── socket.py
│ │ │ ├── ssl.py
│ │ │ ├── struct.py
│ │ │ ├── sys.py
│ │ │ ├── time.py
│ │ │ ├── ubinascii.py
│ │ │ ├── ucollections.py
│ │ │ ├── uctypes.py
│ │ │ ├── uerrno.py
│ │ │ ├── uhashlib.py
│ │ │ ├── uheapq.py
│ │ │ ├── uio.py
│ │ │ ├── ujson.py
│ │ │ ├── uos.py
│ │ │ ├── upip.py
│ │ │ ├── upip_utarfile.py
│ │ │ ├── upysh.py
│ │ │ ├── urandom.py
│ │ │ ├── ure.py
│ │ │ ├── urequests.py
│ │ │ ├── uselect.py
│ │ │ ├── usocket.py
│ │ │ ├── ussl.py
│ │ │ ├── ustruct.py
│ │ │ ├── utime.py
│ │ │ ├── utimeq.py
│ │ │ ├── uzlib.py
│ │ │ ├── webrepl.py
│ │ │ ├── webrepl_setup.py
│ │ │ ├── websocket.py
│ │ │ ├── websocket_helper.py
│ │ │ └── zlib.py
│ │ ├── event_logging.py
│ │ ├── event_view.py
│ │ ├── files.py
│ │ ├── find_replace.py
│ │ ├── general_config_page.py
│ │ ├── goto_definition.py
│ │ ├── heap.py
│ │ ├── help
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-39.pyc
│ │ │ ├── birdseye.rst
│ │ │ ├── debuggers.rst
│ │ │ ├── debugging.rst
│ │ │ ├── dock.rst
│ │ │ ├── errors.rst
│ │ │ ├── flask.rst
│ │ │ ├── index.rst
│ │ │ ├── modes.rst
│ │ │ ├── packages.rst
│ │ │ ├── plotter.rst
│ │ │ ├── program_arguments.rst
│ │ │ ├── shell.rst
│ │ │ └── turtle.rst
│ │ ├── highlight_names.py
│ │ ├── locals_marker.py
│ │ ├── microbit
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-39.pyc
│ │ │ └── api_stubs
│ │ │ ├── __pycache__
│ │ │ │ ├── antigravity.cpython-39.pyc
│ │ │ │ ├── array.cpython-39.pyc
│ │ │ │ ├── audio.cpython-39.pyc
│ │ │ │ ├── builtins.cpython-39.pyc
│ │ │ │ ├── collections.cpython-39.pyc
│ │ │ │ ├── gc.cpython-39.pyc
│ │ │ │ ├── love.cpython-39.pyc
│ │ │ │ ├── machine.cpython-39.pyc
│ │ │ │ ├── math.cpython-39.pyc
│ │ │ │ ├── microbit.cpython-39.pyc
│ │ │ │ ├── micropython.cpython-39.pyc
│ │ │ │ ├── music.cpython-39.pyc
│ │ │ │ ├── neopixel.cpython-39.pyc
│ │ │ │ ├── os.cpython-39.pyc
│ │ │ │ ├── radio.cpython-39.pyc
│ │ │ │ ├── random.cpython-39.pyc
│ │ │ │ ├── speech.cpython-39.pyc
│ │ │ │ ├── struct.cpython-39.pyc
│ │ │ │ ├── sys.cpython-39.pyc
│ │ │ │ ├── this.cpython-39.pyc
│ │ │ │ ├── time.cpython-39.pyc
│ │ │ │ ├── ucollections.cpython-39.pyc
│ │ │ │ ├── ustruct.cpython-39.pyc
│ │ │ │ └── utime.cpython-39.pyc
│ │ │ ├── antigravity.py
│ │ │ ├── array.py
│ │ │ ├── audio.py
│ │ │ ├── builtins.py
│ │ │ ├── collections.py
│ │ │ ├── gc.py
│ │ │ ├── love.py
│ │ │ ├── machine.py
│ │ │ ├── math.py
│ │ │ ├── microbit.py
│ │ │ ├── micropython.py
│ │ │ ├── music.py
│ │ │ ├── neopixel.py
│ │ │ ├── os.py
│ │ │ ├── radio.py
│ │ │ ├── random.py
│ │ │ ├── speech.py
│ │ │ ├── struct.py
│ │ │ ├── sys.py
│ │ │ ├── this.py
│ │ │ ├── time.py
│ │ │ ├── ucollections.py
│ │ │ ├── ustruct.py
│ │ │ └── utime.py
│ │ ├── micropython
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ ├── backend.cpython-39.pyc
│ │ │ │ ├── bare_metal_backend.cpython-39.pyc
│ │ │ │ ├── connection.cpython-39.pyc
│ │ │ │ ├── minipip.cpython-39.pyc
│ │ │ │ ├── miniterm_wrapper.cpython-39.pyc
│ │ │ │ ├── os_mp_backend.cpython-39.pyc
│ │ │ │ ├── pip_gui.cpython-39.pyc
│ │ │ │ ├── serial_connection.cpython-39.pyc
│ │ │ │ ├── ssh_connection.cpython-39.pyc
│ │ │ │ ├── subprocess_connection.cpython-39.pyc
│ │ │ │ ├── uf2dialog.cpython-39.pyc
│ │ │ │ └── webrepl_connection.cpython-39.pyc
│ │ │ ├── api_stubs
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── _onewire.cpython-39.pyc
│ │ │ │ │ ├── array.cpython-39.pyc
│ │ │ │ │ ├── binascii.cpython-39.pyc
│ │ │ │ │ ├── builtins.cpython-39.pyc
│ │ │ │ │ ├── cmath.cpython-39.pyc
│ │ │ │ │ ├── collections.cpython-39.pyc
│ │ │ │ │ ├── dht.cpython-39.pyc
│ │ │ │ │ ├── errno.cpython-39.pyc
│ │ │ │ │ ├── framebuf.cpython-39.pyc
│ │ │ │ │ ├── gc.cpython-39.pyc
│ │ │ │ │ ├── hashlib.cpython-39.pyc
│ │ │ │ │ ├── heapq.cpython-39.pyc
│ │ │ │ │ ├── io.cpython-39.pyc
│ │ │ │ │ ├── json.cpython-39.pyc
│ │ │ │ │ ├── lcd160cr.cpython-39.pyc
│ │ │ │ │ ├── machine.cpython-39.pyc
│ │ │ │ │ ├── math.cpython-39.pyc
│ │ │ │ │ ├── micropython.cpython-39.pyc
│ │ │ │ │ ├── network.cpython-39.pyc
│ │ │ │ │ ├── onewire.cpython-39.pyc
│ │ │ │ │ ├── os.cpython-39.pyc
│ │ │ │ │ ├── pyb.cpython-39.pyc
│ │ │ │ │ ├── random.cpython-39.pyc
│ │ │ │ │ ├── re.cpython-39.pyc
│ │ │ │ │ ├── select.cpython-39.pyc
│ │ │ │ │ ├── socket.cpython-39.pyc
│ │ │ │ │ ├── stm.cpython-39.pyc
│ │ │ │ │ ├── struct.cpython-39.pyc
│ │ │ │ │ ├── sys.cpython-39.pyc
│ │ │ │ │ ├── time.cpython-39.pyc
│ │ │ │ │ ├── ubinascii.cpython-39.pyc
│ │ │ │ │ ├── ucollections.cpython-39.pyc
│ │ │ │ │ ├── uctypes.cpython-39.pyc
│ │ │ │ │ ├── uerrno.cpython-39.pyc
│ │ │ │ │ ├── uhashlib.cpython-39.pyc
│ │ │ │ │ ├── uheapq.cpython-39.pyc
│ │ │ │ │ ├── uio.cpython-39.pyc
│ │ │ │ │ ├── ujson.cpython-39.pyc
│ │ │ │ │ ├── umachine.cpython-39.pyc
│ │ │ │ │ ├── uos.cpython-39.pyc
│ │ │ │ │ ├── urandom.cpython-39.pyc
│ │ │ │ │ ├── ure.cpython-39.pyc
│ │ │ │ │ ├── uselect.cpython-39.pyc
│ │ │ │ │ ├── usocket.cpython-39.pyc
│ │ │ │ │ ├── ustruct.cpython-39.pyc
│ │ │ │ │ ├── utime.cpython-39.pyc
│ │ │ │ │ ├── utimeq.cpython-39.pyc
│ │ │ │ │ ├── uzlib.cpython-39.pyc
│ │ │ │ │ └── zlib.cpython-39.pyc
│ │ │ │ ├── _onewire.py
│ │ │ │ ├── array.py
│ │ │ │ ├── binascii.py
│ │ │ │ ├── builtins.py
│ │ │ │ ├── cmath.py
│ │ │ │ ├── collections.py
│ │ │ │ ├── dht.py
│ │ │ │ ├── errno.py
│ │ │ │ ├── framebuf.py
│ │ │ │ ├── gc.py
│ │ │ │ ├── hashlib.py
│ │ │ │ ├── heapq.py
│ │ │ │ ├── io.py
│ │ │ │ ├── json.py
│ │ │ │ ├── lcd160cr.py
│ │ │ │ ├── machine.py
│ │ │ │ ├── math.py
│ │ │ │ ├── micropython.py
│ │ │ │ ├── network.py
│ │ │ │ ├── onewire.py
│ │ │ │ ├── os.py
│ │ │ │ ├── pyb.py
│ │ │ │ ├── random.py
│ │ │ │ ├── re.py
│ │ │ │ ├── select.py
│ │ │ │ ├── socket.py
│ │ │ │ ├── stm.py
│ │ │ │ ├── struct.py
│ │ │ │ ├── sys.py
│ │ │ │ ├── time.py
│ │ │ │ ├── ubinascii.py
│ │ │ │ ├── ucollections.py
│ │ │ │ ├── uctypes.py
│ │ │ │ ├── uerrno.py
│ │ │ │ ├── uhashlib.py
│ │ │ │ ├── uheapq.py
│ │ │ │ ├── uio.py
│ │ │ │ ├── ujson.py
│ │ │ │ ├── umachine.py
│ │ │ │ ├── uos.py
│ │ │ │ ├── urandom.py
│ │ │ │ ├── ure.py
│ │ │ │ ├── uselect.py
│ │ │ │ ├── usocket.py
│ │ │ │ ├── ustruct.py
│ │ │ │ ├── utime.py
│ │ │ │ ├── utimeq.py
│ │ │ │ ├── uzlib.py
│ │ │ │ └── zlib.py
│ │ │ ├── backend.py
│ │ │ ├── bare_metal_backend.py
│ │ │ ├── connection.py
│ │ │ ├── minipip.py
│ │ │ ├── miniterm_wrapper.py
│ │ │ ├── os_mp_backend.py
│ │ │ ├── pip_gui.py
│ │ │ ├── serial_connection.py
│ │ │ ├── ssh_connection.py
│ │ │ ├── subprocess_connection.py
│ │ │ ├── uf2dialog.py
│ │ │ └── webrepl_connection.py
│ │ ├── misc_analyzers.py
│ │ ├── mypy
│ │ │ ├── __init__.py
│ │ │ └── __pycache__
│ │ │ └── __init__.cpython-39.pyc
│ │ ├── notes.py
│ │ ├── object_inspector.py
│ │ ├── outline.py
│ │ ├── paren_matcher.py
│ │ ├── pgzero_frontend.py
│ │ ├── pi
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-39.pyc
│ │ │ └── res
│ │ │ ├── _disabled_debug-run-cursor.png
│ │ │ ├── _disabled_debug-run-cursor48.png
│ │ │ ├── _disabled_debug-run.png
│ │ │ ├── _disabled_debug-run48.png
│ │ │ ├── _disabled_debug-step-into.png
│ │ │ ├── _disabled_debug-step-into48.png
│ │ │ ├── _disabled_debug-step-out.png
│ │ │ ├── _disabled_debug-step-out48.png
│ │ │ ├── _disabled_debug-step-over.png
│ │ │ ├── _disabled_debug-step-over48.png
│ │ │ ├── _disabled_document-new.png
│ │ │ ├── _disabled_document-new48.png
│ │ │ ├── _disabled_document-open.png
│ │ │ ├── _disabled_document-open48.png
│ │ │ ├── _disabled_document-save.png
│ │ │ ├── _disabled_document-save48.png
│ │ │ ├── _disabled_media-playback-start.png
│ │ │ ├── _disabled_media-playback-start48.png
│ │ │ ├── _disabled_process-stop.png
│ │ │ ├── _disabled_process-stop48.png
│ │ │ ├── _disabled_quit.png
│ │ │ ├── _disabled_quit48.png
│ │ │ ├── _disabled_resume.png
│ │ │ ├── _disabled_resume48.png
│ │ │ ├── _disabled_scrollbar-button-down-insens.png
│ │ │ ├── _disabled_scrollbar-button-down.png
│ │ │ ├── _disabled_scrollbar-button-left-insens.png
│ │ │ ├── _disabled_scrollbar-button-left.png
│ │ │ ├── _disabled_scrollbar-button-right-insens.png
│ │ │ ├── _disabled_scrollbar-button-right.png
│ │ │ ├── _disabled_scrollbar-button-up-insens.png
│ │ │ ├── _disabled_scrollbar-button-up.png
│ │ │ ├── _disabled_window-close-act.png
│ │ │ ├── _disabled_window-close.png
│ │ │ ├── _disabled_zoom.png
│ │ │ ├── _disabled_zoom48.png
│ │ │ ├── debug-run-cursor.png
│ │ │ ├── debug-run-cursor48.png
│ │ │ ├── debug-run.png
│ │ │ ├── debug-run48.png
│ │ │ ├── debug-step-into.png
│ │ │ ├── debug-step-into48.png
│ │ │ ├── debug-step-out.png
│ │ │ ├── debug-step-out48.png
│ │ │ ├── debug-step-over.png
│ │ │ ├── debug-step-over48.png
│ │ │ ├── document-new.png
│ │ │ ├── document-new48.png
│ │ │ ├── document-open.png
│ │ │ ├── document-open48.png
│ │ │ ├── document-save.png
│ │ │ ├── document-save48.png
│ │ │ ├── media-playback-start.png
│ │ │ ├── media-playback-start48.png
│ │ │ ├── process-stop.png
│ │ │ ├── process-stop48.png
│ │ │ ├── quit.png
│ │ │ ├── quit48.png
│ │ │ ├── resume.png
│ │ │ ├── resume48.png
│ │ │ ├── scrollbar-button-down-insens.png
│ │ │ ├── scrollbar-button-down.png
│ │ │ ├── scrollbar-button-left-insens.png
│ │ │ ├── scrollbar-button-left.png
│ │ │ ├── scrollbar-button-right-insens.png
│ │ │ ├── scrollbar-button-right.png
│ │ │ ├── scrollbar-button-up-insens.png
│ │ │ ├── scrollbar-button-up.png
│ │ │ ├── window-close-act.png
│ │ │ ├── window-close.png
│ │ │ ├── zoom.png
│ │ │ └── zoom48.png
│ │ ├── pip_gui.py
│ │ ├── printing
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-39.pyc
│ │ │ └── template.html
│ │ ├── pylint
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ └── messages.cpython-39.pyc
│ │ │ └── messages.py
│ │ ├── remove_old_data_dir.py
│ │ ├── replayer.py
│ │ ├── rpi_pico
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ └── rpi_pico_backend.cpython-39.pyc
│ │ │ └── rpi_pico_backend.py
│ │ ├── run_debug_config_page.py
│ │ ├── shell_config_page.py
│ │ ├── shell_macro.py
│ │ ├── statement_boxes.py
│ │ ├── stdlib_error_helpers.py
│ │ ├── system_shell
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ └── explain_environment.cpython-39.pyc
│ │ │ └── explain_environment.py
│ │ ├── terminal_config_page.py
│ │ ├── theme_and_font_config_page.py
│ │ ├── thonny_folders.py
│ │ ├── tomorrow_syntax_theme.py
│ │ └── variables.py
│ ├── res
│ │ ├── 16x16-blank.gif
│ │ ├── 1x1-white.gif
│ │ ├── PrintLnkTarget.vbs
│ │ ├── __pycache__
│ │ │ └── _create_disabled_variants.cpython-39.pyc
│ │ ├── _create_disabled_variants.py
│ │ ├── _disabled_16x16-blank.gif
│ │ ├── _disabled_1x1-white.gif
│ │ ├── _disabled_arrow-down.gif
│ │ ├── _disabled_birdseye.png
│ │ ├── _disabled_boxdot.png
│ │ ├── _disabled_boxdot_light.png
│ │ ├── _disabled_boxminus.png
│ │ ├── _disabled_boxminus_light.png
│ │ ├── _disabled_boxplus.png
│ │ ├── _disabled_boxplus_light.png
│ │ ├── _disabled_boxx.png
│ │ ├── _disabled_boxx_light.png
│ │ ├── _disabled_closed-folder.gif
│ │ ├── _disabled_debug-current-script.png
│ │ ├── _disabled_debug-current-script_2x.png
│ │ ├── _disabled_delete.gif
│ │ ├── _disabled_folder.gif
│ │ ├── _disabled_generic-file.gif
│ │ ├── _disabled_hard-drive.gif
│ │ ├── _disabled_harddisk.png
│ │ ├── _disabled_harddisk_2x.png
│ │ ├── _disabled_help.png
│ │ ├── _disabled_help_2x.png
│ │ ├── _disabled_information.png
│ │ ├── _disabled_information_2x.png
│ │ ├── _disabled_nav-backward.png
│ │ ├── _disabled_nav-backward_2x.png
│ │ ├── _disabled_nav-forward.png
│ │ ├── _disabled_nav-forward_2x.png
│ │ ├── _disabled_new-file.png
│ │ ├── _disabled_new-file_Linux.png
│ │ ├── _disabled_new-file_Linux_2x.png
│ │ ├── _disabled_open-file.png
│ │ ├── _disabled_open-file_Linux.png
│ │ ├── _disabled_open-file_Linux_2x.png
│ │ ├── _disabled_open_folder.gif
│ │ ├── _disabled_outline-class.png
│ │ ├── _disabled_outline-class_2x.png
│ │ ├── _disabled_outline-method.gif
│ │ ├── _disabled_python-file.gif
│ │ ├── _disabled_python-icon.gif
│ │ ├── _disabled_quit.png
│ │ ├── _disabled_quit_2x.png
│ │ ├── _disabled_resume.png
│ │ ├── _disabled_resume_2x.png
│ │ ├── _disabled_run-current-script.png
│ │ ├── _disabled_run-current-script_2x.png
│ │ ├── _disabled_run-to-cursor.png
│ │ ├── _disabled_run-to-cursor_2x.png
│ │ ├── _disabled_save-file.png
│ │ ├── _disabled_save-file_2x_alt.png
│ │ ├── _disabled_save-file_Linux.png
│ │ ├── _disabled_save-file_Linux_2x.png
│ │ ├── _disabled_save-file_alt.png
│ │ ├── _disabled_star.png
│ │ ├── _disabled_star_2x.png
│ │ ├── _disabled_step-into.png
│ │ ├── _disabled_step-into_2x.png
│ │ ├── _disabled_step-out.png
│ │ ├── _disabled_step-out_2x.png
│ │ ├── _disabled_step-over.png
│ │ ├── _disabled_step-over_2x.png
│ │ ├── _disabled_stop.png
│ │ ├── _disabled_stop_2x_alt.png
│ │ ├── _disabled_stop_alt.png
│ │ ├── _disabled_tab-close-active-clam-dark.gif
│ │ ├── _disabled_tab-close-active-clam.gif
│ │ ├── _disabled_tab-close-active.gif
│ │ ├── _disabled_tab-close-clam.gif
│ │ ├── _disabled_tab-close.gif
│ │ ├── _disabled_terminal.png
│ │ ├── _disabled_terminal_2x.png
│ │ ├── _disabled_text-file.gif
│ │ ├── _disabled_thonny.png
│ │ ├── _disabled_zoom.png
│ │ ├── arrow-down.gif
│ │ ├── birdseye.png
│ │ ├── boxdot.png
│ │ ├── boxdot_light.png
│ │ ├── boxminus.png
│ │ ├── boxminus_light.png
│ │ ├── boxplus.png
│ │ ├── boxplus_light.png
│ │ ├── boxx.png
│ │ ├── boxx_light.png
│ │ ├── broken.png
│ │ ├── closed-folder.gif
│ │ ├── debug-current-script.png
│ │ ├── debug-current-script_2x.png
│ │ ├── delete.gif
│ │ ├── folder.gif
│ │ ├── generic-file.gif
│ │ ├── hard-drive.gif
│ │ ├── harddisk.png
│ │ ├── harddisk_2x.png
│ │ ├── help.png
│ │ ├── help_2x.png
│ │ ├── information.png
│ │ ├── information_2x.png
│ │ ├── nav-backward.png
│ │ ├── nav-backward_2x.png
│ │ ├── nav-forward.png
│ │ ├── nav-forward_2x.png
│ │ ├── new-file.png
│ │ ├── new-file_Linux.png
│ │ ├── new-file_Linux_2x.png
│ │ ├── open-file.png
│ │ ├── open-file_Linux.png
│ │ ├── open-file_Linux_2x.png
│ │ ├── open_folder.gif
│ │ ├── outline-class.png
│ │ ├── outline-class_2x.png
│ │ ├── outline-method.gif
│ │ ├── python-file.gif
│ │ ├── python-icon.gif
│ │ ├── quit.png
│ │ ├── quit_2x.png
│ │ ├── resume.png
│ │ ├── resume_2x.png
│ │ ├── run-current-script.png
│ │ ├── run-current-script_2x.png
│ │ ├── run-to-cursor.png
│ │ ├── run-to-cursor_2x.png
│ │ ├── save-file.png
│ │ ├── save-file_2x_alt.png
│ │ ├── save-file_Linux.png
│ │ ├── save-file_Linux_2x.png
│ │ ├── save-file_alt.png
│ │ ├── star.png
│ │ ├── star_2x.png
│ │ ├── step-into.png
│ │ ├── step-into_2x.png
│ │ ├── step-out.png
│ │ ├── step-out_2x.png
│ │ ├── step-over.png
│ │ ├── step-over_2x.png
│ │ ├── stop.png
│ │ ├── stop_2x_alt.png
│ │ ├── stop_alt.png
│ │ ├── tab-close-active-clam-dark.gif
│ │ ├── tab-close-active-clam.gif
│ │ ├── tab-close-active.gif
│ │ ├── tab-close-clam.gif
│ │ ├── tab-close.gif
│ │ ├── terminal.png
│ │ ├── terminal_2x.png
│ │ ├── text-file.gif
│ │ ├── thonny.ico
│ │ ├── thonny.png
│ │ ├── thonny_small.ico
│ │ └── zoom.png
│ ├── roughparse.py
│ ├── rst_utils.py
│ ├── running.py
│ ├── shell.py
│ ├── terminal.py
│ ├── test
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ ├── __init__.cpython-39.pyc
│ │ │ └── test_common.cpython-39.pyc
│ │ ├── plugins
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-39.pyc
│ │ │ │ ├── test_locals_marker.cpython-39.pyc
│ │ │ │ └── test_name_highlighter.cpython-39.pyc
│ │ │ ├── test_locals_marker.py
│ │ │ └── test_name_highlighter.py
│ │ └── test_common.py
│ ├── tktextext.py
│ ├── token_utils.py
│ ├── ui_utils.py
│ ├── workbench.py
│ └── workdlg.py
└── tkinter做的IDE,超级牛!(thonny).zip
109 directories, 851 files