Python 子类化导致 IDLE 重新启动
Python subclassing causes IDLE to restart
我在一个又长又复杂的脚本中发现了这个问题,但在调试时将其简化为这个非常小的形式,它仍然会导致同样的问题:
from PyQt5.QtWidgets import(QMainWindow)
class Window(QMainWindow):
pass
当我通过 IDLE 解释器导入这个 class 时,然后尝试用
实例化 class
w = Window()
shell 以“========== RESTART: Shell ===========”消息重新启动。
这些东西解决了问题:
重写代码使Windowclass没有superclass:
from PyQt5.QtWidgets import(QMainWindow)
class Window:
pass
运行 添加了 "if name=='main':" 条件
后,通过双击文件在 IDLE 之外的代码
这些东西不能解决问题:
- 正在更改 class
的名称
- 更改 class 用作超级
关键是,当我返回并尝试 import/instantiate 类似地从过去运行良好且未被触及的旧脚本中继承 class es classes一段时间后,他们现在表现出完全相同的问题。
因此,据我所知,我有一个特定于 IDLE 的问题,即 crashes/restarts 解释器在尝试实例化任何子 class 时会自发出现'以前没有出现过。
有人以前见过这样的东西吗?
感谢您的帮助 - 据我所知,tkinter 和 Qt 之间实际上存在冲突。重新安装我的 Python 环境似乎解决了这个问题!
我在一个又长又复杂的脚本中发现了这个问题,但在调试时将其简化为这个非常小的形式,它仍然会导致同样的问题:
from PyQt5.QtWidgets import(QMainWindow)
class Window(QMainWindow):
pass
当我通过 IDLE 解释器导入这个 class 时,然后尝试用
实例化 classw = Window()
shell 以“========== RESTART: Shell ===========”消息重新启动。
这些东西解决了问题:
重写代码使Windowclass没有superclass:
from PyQt5.QtWidgets import(QMainWindow) class Window: pass
运行 添加了 "if name=='main':" 条件
后,通过双击文件在 IDLE 之外的代码
这些东西不能解决问题:
- 正在更改 class 的名称
- 更改 class 用作超级
关键是,当我返回并尝试 import/instantiate 类似地从过去运行良好且未被触及的旧脚本中继承 class es classes一段时间后,他们现在表现出完全相同的问题。
因此,据我所知,我有一个特定于 IDLE 的问题,即 crashes/restarts 解释器在尝试实例化任何子 class 时会自发出现'以前没有出现过。
有人以前见过这样的东西吗?
感谢您的帮助 - 据我所知,tkinter 和 Qt 之间实际上存在冲突。重新安装我的 Python 环境似乎解决了这个问题!