与Tk的IDLE-图形用户界面(Python教程)(参考资料)
IDLE
源代码: Lib / idlelib
/ IDLE是Python的集成开发和学习环境.
IDLE具有以下特点:
- 用100%纯Python编码,使用
tkinter
GUI工具包 - 跨平台:在Windows,Unix和macOS上工作大致相同
- Python shell窗口(交互式解释器)具有代码输入,输出和错误消息的着色
- 具有多个撤消,Python着色,智能缩进,调用提示,自动完成和其他功能的多窗口文本编辑器
- 在任何窗口中搜索,在编辑器窗口中替换,并搜索多个文件(grep)
- 调试器,包含持久断点,步进和查看全局和本地命名空间
- 配置,浏览器和其他对话框
启动和代码执行
启动时-s
选项,IDLE将执行环境变量IDLESTARTUP
或PYTHONSTARTUP
引用的文件.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)
如果有参数:
启动失败
IDLE使用套接字在IDLE GUI进程和用户代码执行过程之间进行通信。无论何时Shellstart或重新启动,都必须建立连接。(后者用分隔线表示’RESTART’)。如果用户进程无法连接到GUI进程,则会显示一个Tk
错误框,其中包含指向用户的“无法连接”消息。然后退出
失败的常见原因是用户编写的文件与标准库模块同名,例如random.py和tkinter.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.stdout
和sys.stderr
使用从Shell窗口获取输入并将输出发送到Shell窗口的对象。存储在sys.__stdin__
, sys.__stdout__
和sys.__stderr__
中的原始值不会被触及,但可能是None
.
当Shell具有焦点时,它控制键盘和屏幕。这是正常透明的,但直接访问键盘和屏幕的功能将无法正常工作。这些包括系统特定的功能,确定是否按下了一个键,如果是,哪个.
IDLE的标准流替换不是由执行过程中创建的子进程继承的,无论是直接由用户代码还是由无模块进行多处理。如果这样的子进程使用input
来自sys.stdinor print
或write
对于sys.stdout或sys.stderr,应该在命令行窗口中启动IDLE。然后将辅助子进程附加到该窗口进行输入和输出.
如果sys
被用户代码重置,例如importlib.reload(sys)
,IDLE的更改丢失并输入键盘和输出到屏幕将无法正常工作.
Shell中的用户输出
当程序输出文本时,结果由相应的输出设备决定。当IDLE执行用户代码时,sys.stdout
和sys.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,一个例子也用于测试.
评论被关闭。