"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
我在 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