【发布时间】:2020-10-16 05:49:05
【问题描述】:
我编写了这个小程序,它为我在信使中发送垃圾邮件。但如果我愿意,我不能让它停下来。我试图将“try / except: KeyboardInterrupt”放在循环中,但没有帮助。
我需要 python 以某种方式检查我是否按下了某个键,如果按下了则中断循环。另外我知道 Tkinter 中有一个 after() 方法,我应该使用它而不是 time.sleep,但我的尝试失败了。这是我的代码:
from tkinter import *
import time
import pyautogui
root = Tk()
root.title('Typer')
text_field = Text(root, height=20, width=40)
button = Button(text='----Start----')
def typer(event):
text = text_field.get("1.0",END)
time.sleep(5)
for i in text.split(' '):
pyautogui.write(i)
pyautogui.press('enter')
button.bind('<Button-1>', typer)
text_field.pack()
button.pack()
root.mainloop()
更新:
我设法通过这样做将time.sleep() 更改为after():
def typer(event):
def innertyper():
for i in text.split(' '):
pyautogui.write(i)
pyautogui.press('enter')
text = text_field.get("1.0",END)
root.after(5000, innertyper)
但我仍然无法打破 for 循环
【问题讨论】:
-
这能回答你的问题吗? tkinter and time.sleep
-
@jasonharper 好吧,这并不是真正的重复,因为 OP 说他不知道如何使用
.after()。 -
如果你想打破一个循环,你应该检查循环内的一些条件。但是你的代码里面没有这样的代码。
-
您究竟想如何停止循环?你想输入 shell 还是只想按任意键还是在 tkinter 窗口中按一个键?
-
@TheFluffDragon9 我想通过按我在代码中指定的键来停止它,例如 Esc
标签: python loops for-loop tkinter pyautogui