Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3程序在命令行中工作,而不是空闲_Python_Python Idle - Fatal编程技术网

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中消失

一些问题:

  • 有没有办法在空闲时绕过这个问题
  • 是否有其他一些Python代码编辑器没有此限制
  • 我正在写一篇关于我向Python3过渡的博客,我想解释一下为什么我必须将我的工作从空闲转移到命令行。对于这种明显的不一致性,最简单的解释是什么,适合传递给不懂Python的读者? 提前感谢。

    这与python无关,而是一个已知的空闲问题 您可能想知道,IDLE是一个分层应用程序,它使用基于Tcl/Tk的Tkinter控制器部分,还扫描和评估
    .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添加在编辑中)。