i=-1
def infi():
global i
while i<99999999:
i+=1
yield i
a=iter(infi())
for x in range(6):
print(next(a))
#loop paused at 5
print('now it wil start from start 6')
for x in range(11):
print(next(a))
输出:
0
1
2
3
4
5
now it wil start from start 6
6
7
8
9
10
11
12
13
14
15
16
import sys
import select
inputSrc = [sys.stdin]
while True:
# Do important stuff
# Check if a key was pressed and if so, process input
keypress = select.select(inputSrc, [], [], 0)[0]
while keypress:
for src in keypress:
line = src.readline()
if not line:
inputSrc.remove(src)
else:
# The "enter" key prints out a menu
if line == "\n":
print "Test Paused\nOptions: [0]: Quit [any other key]: Resume"
elif line.rstrip() == "0":
exit(0)
elif len(line) >= 1: #any other key
print "Resuming..."
keypress = None
4条答案
按热度按时间mwkjh3gx1#
这是一个简单的无限循环tkinter程序,按空格键暂停/取消暂停,按Esc键退出。
注:以下是Python 2.x的代码,如果你使用的是Python 3,请将第一行中的
Tkinter
改为tkinter
(小写t)。这是一个可能的输出,在退出之前,我手动暂停和取消暂停了程序两次。
tzdcorbm2#
不要考虑如何通过一次按键来完成,但是要恢复和暂停while循环,可以使用
generator functions
,参见下面的示例:输出:
hgqdbh6s3#
伙计,这是一个while循环...不要在while循环中运行它,这会阻塞CPU,只是尝试使用计时器...
下面是一个python3示例,用于从未显示的窗口获取输入,在OSX、LinuxUbuntu和Windows8上进行了测试
你可以为此感谢@saranyan...
kdfy810k4#
我一直在寻找这个解决方案,但结果发现它真的很简单。我很喜欢选择模块只在Unix系统上工作,但它让事情变得很简单。