"ESC" 通过在 Visual Studio 中将变量更改为 False 来打破循环的关键

"ESC" key to break loop by changing variable to False in Visual Studio

我在 Visual Studio 代码中有 2 个文件。 “main.py”和“g_Global.py”。 “g_Global.py”有这个代码:

import msvcrt

def key():
  if msvcrt.kbhit() and msvcrt.getch() == chr(27).encode():
    u = False

在“main.py”中有:

import g_Global as g

while x.lower() == 'n' and u == True:
  g.clear()
  print(y)
  y = input('Write a line to add. > ')
  g.key()
  if u == False:
    break

...但是当我 运行 代码时,当我按下 "esc" 时什么也没有发生。有什么想法吗?

当您从 key() 访问 u 时,u 是一个局部变量。您必须在开头添加 global u 才能访问全局变量。即使这样,一个源文件中的变量也不能从另一个源文件中修改。您必须合并两个源文件(移动 key() 到另一个源文件)。

另外,虽然我熟悉msvcrt,但文档说getchr会阻塞,直到有一个键可以读取。所以也许只是摆脱 input()kbhit()?不过,它可能不会在转义时启动,因为它是一把特殊的钥匙。

示例:(我无法测试,因为我不在 MSVC 上)

import msvcrt

while u:
  if msvcrt.getch() == chr(27).encode():
     u = False