Python3程序在命令行中工作,而不是空闲
这个简单的程序在从命令行输入时工作,但在空闲时不工作Python3程序在命令行中工作,而不是空闲,python,python-idle,Python,Python Idle,这个简单的程序在从命令行输入时工作,但在空闲时不工作 # import msvcrt while not msvcrt.kbhit(): print('.', end='') print("kbhit!") 我曾希望这个问题在Python3中消失 一些问题: 有没有办法在空闲时绕过这个问题 是否有其他一些Python代码编辑器没有此限制 我正在写一篇关于我向Python3过渡的博客,我想解释一下为什么我必须将我的工作从空闲转移到命令行。对于这种明显的不一致性,最简单的解释是什么,适合传
#
import msvcrt
while not msvcrt.kbhit():
print('.', end='')
print("kbhit!")
我曾希望这个问题在Python3中消失
一些问题:
.mainloop()
中与键盘相关的事件,这与您检测.kbhit()
的意图相冲突
A1:
没有
A2:
是的,Notepad.exe和许多其他编辑器。如果坚持使用IDE,PyScripter可能就是这样一个候选,因为它不依赖于Tcl/Tk Tkinter框架,并且有许多智能选项(内部/外部python解释器、intellisense、对象内省、通过各自的、\uuuuuuu doc\uuuuuu
-字符串和许多其他字符串对导入模块的帮助)
A3:
理解两个并发控制器(a.mainloop()
+.kbdhit()
)之间无法避免的冲突
顺便说一句,IDLE的.mainloop()
在您演示的示例中获胜:o)
N.b.:你的博客张贴在哪里?我将用户3666197之前的答案改为0,并将添加更多内容。Idle本身在一个进程中运行。除非以-n开头,否则Idle将运行代码,无论是在>>>的Shell中输入的语句还是编辑器中的整个模块。键盘仍然连接到空闲进程,并且“……6…………6……”中的回显键点击来自空闲代码,而不是您的代码 出于好奇,我以-n开始空闲,tk mainloop仍然首先捕获关键事件,并且您的程序仍然无限期运行 [编辑]我还运行了问题中的测试程序,保存为tem.py,其中包含以下内容
>>> import subprocess as sb
>>> sb.Popen("python c:/programs/python34/tem.py")
这与从控制台运行程序的工作原理相同。按一个印有“kbhit!”的键然后关上窗户。当从第二个编辑器窗口运行时,这也可以工作
我正在考虑将这一想法添加到Idle文档中,作为运行程序的一般方法,比如这一种,它与Idle的运行环境交互不好。(这不是第一次。)或者应该有一个新的运行菜单项。我不知道该怎么称呼它。运行批处理?在控制台中运行
在测试程序结束时添加input()
,可在按键输入后保持窗口打开
在循环中添加time.sleep(.5)会导致在缓冲区中收集“.”打印,直到按下键后才会显示。与Idle无关,因为如果程序在控制台中执行,则与Idle一样
C:\Programs\Python34>python tem.py
它是如何工作的?在空闲状态下,程序检测并回显按下的键,但不会停止并键入kbhit!如:
感谢您明确(如果令人失望)的回答。不幸的是,我的第二个问题不清楚。我应该说“有没有其他程序既可以编辑和运行程序,又可以提供类似空闲的调试帮助,但没有这个限制?”谢谢你的夸奖,b0bm00re。StackOverflow Netiquette鼓励用户通过+1投票的方式在回答中表达他们的感谢,以表明在一个好的问题或清晰合理的答案中有一些有用/有用的东西。不要犹豫用这种方式表达。我无法在@user3666197更新你的答案,因为我在stackoverflow上没有“声誉”。我的博客在。我会看看PySCripter。请稍后再回来。与此同时,其他一些“热心的选民”也为链接做了a-1:o)Thx。Predicto看起来很有趣。有关于效用函数构造和遗传算法部分的详细信息吗?你对交易模型的前瞻性测试精度/召回率/F1分数是多少?当我的在线街头信誉稍高时,你会这么做。在我的节目中,还没有决定重写的细节,还没有准备好公开讨论。其每日预测的准确性并不高——我对待它的态度与关注有线新闻商业频道的谈话头头的态度相同——这只是又一个愚蠢的观点。欢迎您对我在博客中的Python代码写作风格发表意见。什么是“先前的答案”?答案可以随时间以不同的顺序出现。用户3666197的上一个答案(id添加在编辑中)。