You are here:  Home » Python » 与Tk的IDLE-图形用户界面(Python教程)(参考资料)

IDLE

源代码: Lib / idlelib


/ IDLE是Python的集成开发和学习环境.

IDLE具有以下特点:

  • 用100%纯Python编码,使用tkinter GUI工具包
  • 跨平台:在Windows,Unix和macOS上工作大致相同
  • Python shell窗口(交互式解释器)具有代码输入,输出和错误消息的着色
  • 具有多个撤消,Python着色,智能缩进,调用提示,自动完成和其他功能的多窗口文本编辑器
  • 在任何窗口中搜索,在编辑器窗口中替换,并搜索多个文件(grep)
  • 调试器,包含持久断点,步进和查看全局和本地命名空间
  • 配置,浏览器和其他对话框

编辑和导航

编辑窗口

IDLE可能会在启动时打开编辑器窗口,具体取决于设置以及如何启动IDLE。此后,使用“文件”菜单。对于给定文件,只能有一个打开的编辑器窗口.

标题栏包含文件名,完整路径以及运行窗口的Python和IDLE版本。状态栏包含linenumber(’Ln’)和列号(’Col’)。行号以1开头;列号为0.

IDLE假定具有已知.py *扩展名的文件包含Python代码而其他文件不包含。使用Run菜单运行Python代码.

键绑定

在本节中,’C’指的是在Windows和Unix上控制键和命令键上macOS.

  • Backspace删除左边; Del 删除右边

  • C-Backspace 删除单词; C-Del 删除右边的字

  • 箭头键和 Page Up /Page Down 走动

  • C-LeftArrow C-RightArrow 用文字移动

  • 首页/结束去开始/结束

  • C-Home / C-End 转到文件的开头/结尾

  • 一些有用的Emacs绑定继承自Tcl / Tk

    • Ca 行的开头
    • Ce 行尾
    • Ck 杀线(但不把它放在剪贴板中)
    • Cl 插入点周围的中心窗口
    • Cb 向后移动一个字符而不删除(通常你也可以使用光标键)
    • Cf 前进一个字符而不删除(通常你也可以使用光标键)
    • Cp 上一行(通常你也可以使用光标键())
    • Cd 删除下一个字符

标准键绑定(如抄送复制和 Cv 粘贴)可能会起作用。在配置IDLE对话框中选择了键绑定.

自动缩进

在块打开语句之后,下一行缩进4个空格(在一个选项卡的Python Shell窗口中)。在某些关键字(中断,返回等)之后,下一行将缩进。在领先的缩进中,退格如果在那里删除最多4个空格。标签插入空格(在PythonShell窗口中有一个选项卡),数字取决于缩进宽度。目前,由于Tcl / Tk的限制,标签仅限于四个空格.

另请参阅格式菜单上的缩进/ dedent区域命令.

完成

为类的函数,类和属性提供了完成,包括内置和用户定义。还提供了文件名的完成情况.

AutoCompleteWindow(ACW)将在输入’。’或(在字符串中)输入os.sep之后的预定义延迟(默认为两秒)后打开。如果在其中一个字符(加上零个或多个其他字符)后输入一个标签,如果找到可能的延续,ACW将立即打开.

如果输入的字符只有一个可能的完成,则 Tab 将在不打开ACW的情况下提供完成.

显示完成’将强制打开完成窗口,默认情况下 C-space 将打开一个完成窗口。在emptystring中,这将包含当前目录中的文件。在ablank行上,它将包含当前名称空间中的内置和用户定义的函数和类,以及导入的任何模块。如果输入了某些字符,ACW将尝试更具体.

如果键入一串字符,ACW选择将跳转到最接近这些字符的条目。输入标签将导致在编辑器窗口或Shell中输入最长的非模糊匹配。连续两个标签将提供当前的ACW选择,如返回或双击。光标键,Page Up / Down,鼠标选择和滚轮都在ACW上运行.

可以通过在’。’之后键入hiddenname的开头来访问“隐藏”属性,例如“_”。这允许访问具有__all__ set或class-private属性的模块.

完成和’Expand Word’工具可以节省大量的输入!

完成是目前仅限于命名空间中的那些。编辑窗口中的名称不是通过__main__sys.modules找不到的。使用导入运行模块一次以纠正这种情况。请注意,IDLE本身在sys.modules中放置了很多模块,默认情况下可以找到somuch,例如:re模块.

如果你不喜欢ACW弹出不受限制,只需做一个delaylonger或禁用扩展.

Calltips

一个呼叫提示显示类型accessible函数的名称之后。名称表达式可能包括点和下标。一个calltipremains,直到它被点击,光标移出参数区域,或输入。当光标位于定义的参数部分时,菜单或快捷方式显示一个calltip.

calltip由函数签名和thedocstring的第一行组成。对于没有可访问签名的内置函数,所有行的calltipconsists排列第五行或第一个空行。这些细节可能会改变.

这套accessible函数取决于已导入到用户进程的模块,包括由Idle本身导入的模块,以及自上次重新启动以来运行的定义.

例如,重新启动Shell并输入itertools.count(。出现一个calltip,因为Idle将itertools导入到用户进程中供自己使用。(这可能会改变。)输入turtle.write(没有出现。闲置不会导入乌龟。菜单或快捷方式也不执行任何操作。输入import turtle然后turtle.write(就可以了

在编辑器中,导入语句在运行文件之前不起作用。Onemight想在顶部写入import语句后运行文件,或者在编辑之前立即运行现有文件

代码上下文

在包含Python代码的编辑器窗口中,可以切换代码上下文,以便显示或隐藏窗口顶部的窗格。如图所示,此窗格冻结了块代码的开头行,例如以class, def, 要么 if关键字,否则会滚动视图。窗格的大小将根据需要进行扩展和收缩,以显示上下文的所有当前级别,最多为“配置IDLE”对话框中定义的最大行数(默认为15)。如果没有当前上下文行并且打开了该功能,则会显示一个空白行。单击上下文窗格中的一行将该行移动到编辑器的顶部.

可以在Configure IDLE对话框的Highlights选项卡中配置上下文窗格的文本和背景颜色.

Python Shell窗口

使用IDLE的Shell,可以输入,编辑和回忆完整的语句。大多数控制台和终端一次只能使用一条物理线路.

当一个代码粘贴到Shell时,它不会被编译,并且可能只执行一次命令返回。可以先编辑粘贴的代码。如果将一个语句粘贴到Shell中,当编译多个语句时,结果将是SyntaxError,就像它们是一个一样.

以交互方式输入代码时,前面小节中描述的编辑功能起作用。IDLE的Shell窗口也响应以下键.

  • C-c中断执行命令

  • C-d 发送文件结尾;如果在>>>提示符下键入

  • Alt - /(扩展单词)也可以减少输入

    命令历史

    • Alt键-p 检索与您键入的内容匹配的上一个命令。OnmacOS使用 C-p .
    • Alt-n 接下来检索。在macOS上使用 C-n .
    • 返回而在任何上一个命令检索该命令时

文本颜色

空白默认为白色文本上的黑色,但颜色文本具有特殊含义。对于shell,这些是shell输出,shell错误,用户输出和用户错误。对于Python代码,在shell提示符或编辑器中,这些是关键字,内置类和函数名,后面是classdef,字符串和注释。对于任何文本窗口,这些是光标(当存在时),找到的文本(如果可能)和选定的文本.

文本着色在后台完成,因此偶尔可以看到未着色的文本。要更改颜色方案,请使用“配置IDLE”对话框突出显示选项卡。弹出窗口和对话框中编辑器和文本中的调试器断点行标记不是用户可配置的.

启动和代码执行

启动时-s选项,IDLE将执行环境变量IDLESTARTUPPYTHONSTARTUP引用的文件.IDLE首先检查IDLESTARTUP;如果IDLESTARTUP存在,则运行filereferenced。如果IDLESTARTUP不存在,IDLE会检查PYTHONSTARTUP。这些环境变量引用的文件是存储IDLEshell中经常使用的函数的便利位置,或者是用于执行import语句以导入公共模块的事件.

此外,Tk还会加载启动文件它存在。请注意,无条件地加载TCP文件。这个附加文件是.Idle.py,并在用户的主目录中查找。此文件中的语句将在Tk命名空间中执行,因此该文件对于导入要从IDLE的Python shell使用的函数没有用.

命令行用法

idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...-c command  run command in the shell window-d          enable debugger and open shell window-e          open editor window-h          print help message with legal combinations and exit-i          open shell window-r file     run file in shell window-s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window-t title    set title of shell window-           run stdin in shell (- must be last option before args)

如果有参数:

  • 如果使用-, -cr,所有参数都放在sys.argv[1:...]sys.argv[0]设置为"", "-c",或者"-r"。没有打开编辑器窗口,即使这是选项对话框中的默认设置.
  • 否则,参数是为编辑打开的文件,sys.argv反映传递给IDLE本身的参数.

启动失败

IDLE使用套接字在IDLE GUI进程和用户代码执行过程之间进行通信。无论何时Shellstart或重新启动,都必须建立连接。(后者用分隔线表示’RESTART’)。如果用户进程无法连接到GUI进程,则会显示一个Tk错误框,其中包含指向用户的“无法连接”消息。然后退出

失败的常见原因是用户编写的文件与标准库模块同名,例如random.pytkinter.py。当这样的文件位于与即将运行的文件相同的目录中时,IDLE无法导入stdlib文件。目前的修复方法是重命名用户文件.

虽然不像过去那样常见,但防病毒或防火墙程序可能会停止连接。如果无法教授程序允许连接,则必须关闭它才能使IDLE工作。允许此内部连接是安全的,因为在外部端口上没有可见的数据。类似的问题是阻塞连接的网络错误配置.

Python安装问题偶尔会停止IDLE:多个版本可能会崩溃,或者单个安装可能需要管理员访问权限。如果一个撤消theclash,或者不能或不想以管理员身份运行,最简单的方法就是完全删除Python并重新开始.

僵尸pythonw.exe进程可能有问题。在Windows上,使用TaskManager检测并停止一个。有时,由程序崩溃或键盘中断(control-C)启动的重启可能无法连接。在Shell菜单上解除错误框或重新启动Shell可能会解决临时问题.

当IDLE首次启动时,它会尝试读取〜/ .idlerc /中的用户配置文件(〜是一个主目录)。如果出现问题,则应显示错误消息。暂且不考虑随机磁盘故障,可以通过手动编辑文件来防止这种情况,使用配置对话框,在选项下,而不是选项。一旦它发生,解决方案可能会删除一个或多个配置文件.

如果IDLE退出没有消息,并且它没有从控制台启动,从控制台trystarting(python -m idlelib)并查看是否出现消息.

运行用户代码

除了极少数例外,使用IDLE执行Python代码的结果与通过默认方法执行相同代码的结果相同,直接在文本模式系统控制台或终端窗口中使用Python。但是,不同的界面和操作偶尔会影响可见结果。例如,sys.modules以更多条目开头,而threading.activeCount()返回2而不是1.

默认情况下,IDLE在单独的OS进程中运行用户代码,而不是在运行shell和编辑器的用户界面进程中运行。在执行过程中,它取代了sys.stdin, sys.stdoutsys.stderr使用从Shell窗口获取输入并将输出发送到Shell窗口的对象。存储在sys.__stdin__, sys.__stdout__sys.__stderr__中的原始值不会被触及,但可能是None.

当Shell具有焦点时,它控制键盘和屏幕。这是正常透明的,但直接访问键盘和屏幕的功能将无法正常工作。这些包括系统特定的功能,确定是否按下了一个键,如果是,哪个.

IDLE的标准流替换不是由执行过程中创建的子进程继承的,无论是直接由用户代码还是由无模块进行多处理。如果这样的子进程使用input来自sys.stdinor printwrite对于sys.stdout或sys.stderr,应该在命令行窗口中启动IDLE。然后将辅助子进程附加到该窗口进行输入和输出.

如果sys被用户代码重置,例如importlib.reload(sys),IDLE的更改丢失并输入键盘和输出到屏幕将无法正常工作.

Shell中的用户输出

当程序输出文本时,结果由相应的输出设备决定。当IDLE执行用户代码时,sys.stdoutsys.stderr连接到IDLE Shell的显示区域。某些功能继承自底层Tk Text小部件。其他是程序化的补充。重要的是,壳牌的设计是为了开发而不是生产运行.

例如,Shell永远不会抛弃输出。向Shell发送无限输出的程序最终将填满内存,导致内存错误。相比之下,某些系统文本窗口仅保留最后n行输出。例如,Windows控制台保留用户可设置的1到9999行默认值为300.

文本窗口小部件显示Unicode的子集,基本多语言平面(BMP)。哪些字符获得正确的字形而不是替换框取决于操作系统和安装的字体。换行符会导致跟随文本出现在新行上,但其他控制字符可以替换为框或删除。但是,repr(),用于表达式值的交互式回声,在输出之前用控制字符,一些BMP代码点和所有带有转义码的非BMP字符替换.

正常和错误输出是通常与代码输入和彼此分开(在单独的行上)。它们各有不同的高光颜色.

对于SyntaxError回溯,通过使用错误突出显示文本着色来替换检测到错误的正常“^”标记。当从文件运行代码导致其他异常时,可以右键单击回溯线以跳转到相应的行中。IDLE编辑器。如有必要,将打开文件.

Shell有一个特殊的工具,用于将输出线压缩到“压缩文本”标签。这是通过N行输出自动完成的(默认情况下N = 50).N可以在“设置”对话框的“常规”页面的PyShell部分中更改。通过单击输出可以挤压较少线条的输出。这可以是有用的线,足以减慢滚动速度.

通过双击标签将挤压输出扩展到适当位置。也可以通过右键单击标签将其发送到剪贴板或单独的视图窗口.

开发tkinter应用程序

IDLE故意与标准Python不同,以促进tkinter程序的开发。在标准Python中输入import tkinter as tk;root = tk.Tk()并且不显示任何内容。在IDLE中输入相同的内容,然后会出现一个tk窗口。在标准Python中,还必须输入root.update()才能看到窗口。IDLE在背景中做等效的,大约每秒20次,大概是每50分钟。接下来输入b = tk.Button(root, text="button"); b.pack()。同样,标准Python中没有任何明显变化,直到一个人进入root.update().

大多数tkinter程序运行root.mainloop(),这通常不会在tk应用程序被销毁之前返回。如果用python -i或IDLE编辑器运行程序,>>> shell提示符不会出现,直到mainloop()返回,此时没有任何东西可以与之交互.

从IDLE编辑器运行tkinter程序时,可以注释掉mainloop调用。然后立即获得shell提示并且可以与实时应用程序交互。只需要记住在标准Python中运行时重新启用mainloop调用

没有子进程运行

默认情况下,IDLE通过套接字在单独的子进程中执行用户代码内部环回接口。这个连接在外部是可见的,没有数据发送到Internet或从Internet接收。如果防火墙软件无论如何都会抱怨,你可以忽略它.

如果试图使套接字连接失败,Idle会通知你。故障有时是暂时的,但如果持久,问题可能是防火墙阻塞连接或特定系统的配置错误。问题解决之前,可以使用-n命令行开关运行Idle .

如果使用-n命令行开关启动IDLE,它将在单个进程中运行,并且不会创建运行RPCPython执行服务器的子进程。如果Python无法在您的平台上创建子进程或RPC套接字接口,这将非常有用。但是,在此模式下,用户代码不会与IDLE本身隔离。此外,选择运行/运行模块(F5)时,不会重新启动环境。如果您的代码已被修改,您必须重新加载()受影响的模块并重新导入任何特定项目(例如,从foo import baz),如果更改生效。由于这些原因,最好在可能的情况下使用默认子进程运行IDLE。

自版本3.4以后更改.

帮助和首选项

帮助来源

帮助菜单条目“IDLE Help”显示Library Reference的IDLE章节的格式化html版本。在只读文本窗口中,结果与Web浏览器中的结果非常接近。使用鼠标滚轮,滚动条或向上和向下箭头键按住文本。或者单击TOC(目录))按钮并在打开的框中选择一个sectionheader .

帮助菜单条目“Python Docs”打开了广泛的帮助来源,包括教程,可在docs.python.org/xy获得,其中’x.y’是当前运行的Python版本。如果您的系统具有文档的离线副本(这可能是安装选项),则会打开它.

可以使用“常规”选项卡随时在帮助菜单中添加或删除所选URL。配置IDLE对话框.

设置首选项

可以通过Option菜单上的Configure IDLE更改字体首选项,突出显示,键和常规首选项。非默认用户设置保存在用户目录中的.idlerc目录中。通过编辑或删除.idlerc中的一个或多个文件来解决由错误的用户配置文件导致的问题.

在“突出显示”和“关键点”选项卡上,选择内置或自定义颜色主题和键集。要使用较新的内置颜色主题或带有较旧ID的键集,请将其另存为新的自定义主题或键集,并且可以使用较旧的IDLE。

macOS上闲着

在系统偏好设置:Dock下,可以将“在打开文档时首选标签”设置为“始终”。此设置与IDLE使用的tk / tkinterGUI框架不兼容,它打破了一些IDLE功能.

扩展

IDLE包含扩展功能。可以使用首选项对话框的“扩展”选项卡更改扩展的首选项。请参阅idlelib目录中config-extensions.def的开始以获取进一步信息。唯一的默认扩展名是zzdummy,一个例子也用于测试.

评论被关闭。