python按空格键退出循环_按“空格键”停止暂停循环,再按一次可继续循环(参见更新)...

from PIL import Image

import time

import subprocess

for i in bio:

p = subprocess.Popen(["C:\Program Files\IrfanView\i_view64.exe",'C:\\Users\Moondra\\Bioteck_charts\{}.png'.format(i)])

time.sleep(5)

p.kill()

这是我当前的代码。我在Windows7上。我在遍历一个列表,对于每个元素,我打开一张图片,然后在5秒后关闭它。但是,我希望能够暂停这个循环,如果我想研究图像更长的时间,然后能够从我停止的地方继续循环。在

Psudo代码如下:

^{pr2}$

我看到了这两个线程,但其中一个已经超过9年了(根据用户输入),而且这两个线程使用起来都很复杂(我并不太熟悉)。在

用户输入:

暂停循环:

有没有一个干净的方法来做我想做的事?在

编辑:

使用msvcrt进行测试from msvcrt import getch

while True:

key = ord(getch())

print(key)

if key == 27: #ESC

break

只是输出255(一遍又一遍)。

如果我按esc,没有反应,循环不会中断。

尽管按了不同的键,打印出来的数字(255)也没有改变。在

更新:

我在尝试另一种方式。不确定这是否更好,但是,我发现了一个名为

从线程导入线程

导入键盘

导入子流程

进口腌菜def keyboard_press():

while p == True:

if keyboard.is_pressed('down') == True:

print('yes')

input()

p.kill()

#continue

with open('C:\\Users\Moondra\\Bioteck.pickle', 'rb') as file:

bio = pickle.load(file)

for i in bio[:5]:

p = subprocess.Popen(["C:\Program Files\IrfanView\i_view64.exe",'C:\\Users\Moondra\\Bioteck_charts\{}.png'.format(i)])

from threading import Thread

t = Thread(target = keyboard_press, args =())

t.start()

t.join()

time.sleep(3)

p.kill()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Python 的 GUI 库,如 `tkinter`、`PyQt`、`wxPython` 等,创建一个窗口,在窗口中添加按钮来控制 for 循环暂停继续停止。 以下是一个使用 `tkinter` 创建的简单示例窗口,其中包含三个按钮,分别用于暂停继续停止 for 循环的执行: ```python import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.pause_button = tk.Button(self, text="Pause", command=self.pause_loop) self.pause_button.pack(side="left") self.resume_button = tk.Button(self, text="Resume", command=self.resume_loop) self.resume_button.pack(side="left") self.stop_button = tk.Button(self, text="Stop", command=self.stop_loop) self.stop_button.pack(side="left") def pause_loop(self): # 暂停循环 self.paused = True def resume_loop(self): # 继续循环 self.paused = False def stop_loop(self): # 停止循环 self.stopped = True # 关闭窗口 self.master.destroy() def main_loop(): # 执行 for 循环 for i in range(10): print(i) # 检查是否需要暂停 while app.paused: time.sleep(0.1) # 检查是否需要停止 if app.stopped: break # 暂停1秒 time.sleep(1) # 创建窗口 root = tk.Tk() app = Application(master=root) # 设置循环控制变量的初始值 app.paused = False app.stopped = False # 启动主循环 main_loop() # 进入主事件循环 app.mainloop() ``` 在上面的代码中,首先创建了一个 `Application` 类,继承自 `tkinter.Frame`,用于创建窗口和按钮。在 `create_widgets` 方法中,创建了三个按钮,分别用于暂停继续停止循环的执行。在 `pause_loop` 方法中,将循环控制变量 `paused` 的值设为 `True`,表示需要暂停循环。在 `resume_loop` 方法中,将循环控制变量 `paused` 的值设为 `False`,表示需要继续循环。在 `stop_loop` 方法中,将循环控制变量 `stopped` 的值设为 `True`,表示需要停止循环,并关闭窗口。 在 `main_loop` 函数中,执行 for 循环。在每次循环中,如果需要暂停循环,会进入一个 while 循环,等待 `paused` 变量的值为 `False`,即收到“继续”按钮的信号后才会继续执行。如果需要停止循环,会退出 for 循环。在每次循环中,使用 `time.sleep()` 函数暂停1秒。 在主程序中,创建了一个 `tkinter.Tk` 对象,并将其传递给 `Application` 类的构造函数,创建了一个 `Application` 对象。然后,设置了循环控制变量 `paused` 和 `stopped` 的初始值,并启动主循环。最后,进入主事件循环。 当用户点击暂停继续停止按钮时,会触发相应的回调函数,修改循环控制变量的值,从而控制 for 循环的执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值