缺少Python 3.6的“使用IDLE编辑”选项

时间:2018-06-20 16:35:16

标签: python

我正在使用Python 3.6,并且缺少“使用IDLE编辑”选项。我在Stack Overflow和其他网站上阅读了许多有关编辑注册表的主题,但是没有任何效果。我已经完全重新安装了Python 3.6,也尝试了Python 2.7,但我再也没有安装该选项了。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

严格来说,这不是编程问题,但是这里的注册表项负责Windows资源管理器中Python文件上的上下文菜单项。

由于我的计算机上安装了多个版本的Python,因此我做了一个“使用IDLE编辑”子菜单。

免责声明:)是手工制作的,在卸载Python时不会自动删除。您必须自己清理它。)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle]
"MUIVerb"="&Edit with IDLE"
"Subcommands"=""

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle\shell]

; Python 2.7 -----------------------------------------------------------------------

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle\shell\edit27-32]
"MUIVerb"="Edit with IDLE 2.7 (32-bit)"

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle\shell\edit27-32\command]
@="\"C:\\Python27\\pythonw.exe\" \"C:\\Python27\\Lib\\idlelib\\idle.pyw\" -e \"%1\""

; Python 3.6 -----------------------------------------------------------------------

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle\shell\edit36-32]
"MUIVerb"="Edit with IDLE 3.6 (32-bit)"

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle\shell\edit36-32\command]
@="\"C:\\Python36\\pythonw.exe\" -m idlelib \"%L\" %*"

当然,请根据您的安装目录更改路径。根据已安装的Python版本添加/删除部分。然后另存为.reg文件并导入。

还要注意,我选择了一些明智的子项名称,例如edit36-32。并非严格要求,它们仅需唯一,但是如果我要创建注册表项,我希望它们包含它们所说的内容。因此,请相应地进行调整。


如果您仅安装了一个Python版本,并且从不打算进行第二次安装,或者您喜欢顶级菜单项而不是子菜单中的菜单项:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle]
@="Edit with IDLE 3.6 (32-bit)"

[HKEY_CLASSES_ROOT\Python.File\shell\editwithidle\command]
@="\"C:\\Python36\\pythonw.exe\" -m idlelib \"%L\" %*"

答案 1 :(得分:0)

我以前有这个问题。显然,重新安装系统是可以的,但是我在开玩笑,您不必这样做。我将建议一种可以肯定起作用的方法,如下所示: 1.打开注册表 2.在编辑下:搜索“ python” 3.删除找到的任何术语,然后搜索下一个,直到删除与“ python”相关的所有术语。 4.重新安装python,任何您想要的版本,完成!!!

答案 2 :(得分:0)

如果您没有从其他答案中找到解决方案,请查看我的答案here

func (v *clients) makePtr() {
    (*v).slice = make([]client, 0)
    return
}

func (v clients) makeLit() []client {
    return make([]client, 0)
}

func main() {
    clsPtr := &clients{} // pointer
    clsLit := clients{}  // literal

    clsLit.makePtr() // literal with pointer reciever
    clsLit.makeLit() // literal with pointer reciever
    clsPtr.makePtr() // pointer with literal reciever
    clsPtr.makeLit() // pointer with pointer reciever
}