我想在我的 tkinter window 中嵌入 python 控制台。我该怎么做?
I want to embed python console in my tkinter window.. How can i do it?
我正在制作一个文本编辑器,想在我的应用程序中添加 IDLE 功能。所以我想要一个嵌入 python IDLE 的框架,其中包含原始 python IDLE 提供的所有菜单和功能。
我查看了空闲库的来源,但找不到解决方案。
try:
import idlelib.pyshell
except ImportError:
# IDLE is not installed, but maybe pyshell is on sys.path:
from . import pyshell
import os
idledir = os.path.dirname(os.path.abspath(pyshell.__file__))
if idledir != os.getcwd():
# We're not in the IDLE directory, help the subprocess find run.py
pypath = os.environ.get('PYTHONPATH', '')
if pypath:
os.environ['PYTHONPATH'] = pypath + ':' + idledir
else:
os.environ['PYTHONPATH'] = idledir
pyshell.main()
else:
idlelib.pyshell.main()
此代码是 pyshell.pyw 在所有 python 安装
的 idlelib 文件夹下找到的
我搜索了 idle.pyw,发现它使用的程序 pyshell 是真实的 shell。那我怎么嵌入呢。
我想要一个 python IDLE shell 嵌入 it.Please 的 Tkinter 框架,请提供代码。提前致谢。
Whosebug 不是代码编写服务。相反,目的是帮助您 编写代码。通常最好先写一些代码再问问题,但在这种情况下,你在编码之前就卡住了。
idlelib 实现了 IDLE。虽然您可以自由使用它,但它是私有的,因为代码和接口可以在任何版本中更改而没有通常的 back-compatibility 约束。随意导入和使用 idlelib 模块。
目前,Shell window 是带有菜单和框架的顶层。后者有一个文本和垂直滚动条。不可能在框架内(或在另一个 Toplevel 或 root = Tk())内直观地嵌入 Toplevel。 top = Toplevel(myframe)
有效,但 top
不能 place
d、pack
ed 或 grid
ded myframe
.
我希望将来重构editor.py和pyshell.py,以便将带有菜单的window与带有可滚动文本的框架分开。结果应包括可嵌入的 EditorFrame 和 ShellFrame 类,它们具有 parent
作为参数。但那是以后的事情了。
目前,可以 运行 在 python 中使用 import idlelib.idle
空闲。但是,因为这个 运行s mainloop()(在它自己的根上),它会阻塞并且直到所有 IDLE windows 都关闭才完成。这可能不是一个人想要的。
如果 Shell 运行 在单独的 window 中是可以接受的,那么可以从 python.main 中提取仅 运行 所需的 10-20 行Shell。需要进行一些实验。如果主应用程序使用 tkinter,此函数应将应用程序的根目录作为参数,并且 不 调用 mainloop()。
Tcl 有 Tkcon.tcl 。当每个线程源(意味着run/exec)Tkcon.tcl
每个线程都会弹出一个 Tk shell/Tk console/tkcon.tcl 调试的好主意。并按线程单独打印消息。
Python 有 idle.py ... 以及如何使用它?仍然找出例子。
它们是相同的 Tk 基础。为什么找不到合适的例子?到目前为止...继续寻找...
我正在制作一个文本编辑器,想在我的应用程序中添加 IDLE 功能。所以我想要一个嵌入 python IDLE 的框架,其中包含原始 python IDLE 提供的所有菜单和功能。
我查看了空闲库的来源,但找不到解决方案。
try:
import idlelib.pyshell
except ImportError:
# IDLE is not installed, but maybe pyshell is on sys.path:
from . import pyshell
import os
idledir = os.path.dirname(os.path.abspath(pyshell.__file__))
if idledir != os.getcwd():
# We're not in the IDLE directory, help the subprocess find run.py
pypath = os.environ.get('PYTHONPATH', '')
if pypath:
os.environ['PYTHONPATH'] = pypath + ':' + idledir
else:
os.environ['PYTHONPATH'] = idledir
pyshell.main()
else:
idlelib.pyshell.main()
此代码是 pyshell.pyw 在所有 python 安装
的 idlelib 文件夹下找到的我搜索了 idle.pyw,发现它使用的程序 pyshell 是真实的 shell。那我怎么嵌入呢。
我想要一个 python IDLE shell 嵌入 it.Please 的 Tkinter 框架,请提供代码。提前致谢。
Whosebug 不是代码编写服务。相反,目的是帮助您 编写代码。通常最好先写一些代码再问问题,但在这种情况下,你在编码之前就卡住了。
idlelib 实现了 IDLE。虽然您可以自由使用它,但它是私有的,因为代码和接口可以在任何版本中更改而没有通常的 back-compatibility 约束。随意导入和使用 idlelib 模块。
目前,Shell window 是带有菜单和框架的顶层。后者有一个文本和垂直滚动条。不可能在框架内(或在另一个 Toplevel 或 root = Tk())内直观地嵌入 Toplevel。 top = Toplevel(myframe)
有效,但 top
不能 place
d、pack
ed 或 grid
ded myframe
.
我希望将来重构editor.py和pyshell.py,以便将带有菜单的window与带有可滚动文本的框架分开。结果应包括可嵌入的 EditorFrame 和 ShellFrame 类,它们具有 parent
作为参数。但那是以后的事情了。
目前,可以 运行 在 python 中使用 import idlelib.idle
空闲。但是,因为这个 运行s mainloop()(在它自己的根上),它会阻塞并且直到所有 IDLE windows 都关闭才完成。这可能不是一个人想要的。
如果 Shell 运行 在单独的 window 中是可以接受的,那么可以从 python.main 中提取仅 运行 所需的 10-20 行Shell。需要进行一些实验。如果主应用程序使用 tkinter,此函数应将应用程序的根目录作为参数,并且 不 调用 mainloop()。
Tcl 有 Tkcon.tcl 。当每个线程源(意味着run/exec)Tkcon.tcl 每个线程都会弹出一个 Tk shell/Tk console/tkcon.tcl 调试的好主意。并按线程单独打印消息。 Python 有 idle.py ... 以及如何使用它?仍然找出例子。 它们是相同的 Tk 基础。为什么找不到合适的例子?到目前为止...继续寻找...