import tkinter as tk
tk = tk.Tk()
def on_key(event):
if event.char == 'q':
tk.quit()
def action():
print("打倒反贼苏沪!")
tk.after(1000, action)
thread = threading.Thread(target = tk.mainloop)
thread.start()
#绑定按键事件
tk.bind('<KeyPress>', on_key)
#延迟1秒后开始执行action函数
tk.after(1000, action)
#开启主循环
tk.mainloop()
linying002 发表于 2023-12-16 22:05
代码是这样吗?
import tkinter as tk
tk = tk.Tk() ...
非常抱歉,我之前的回答还是有误导性。在IDLE中,由于其特殊的交互模式,无法在同一进程中通过多线程运行Tkinter主循环来监听键盘输入。为了在IDLE中实现这个功能,我们可以结合使用`signal`模块来捕获键盘的中断信号。下面是一个修正后的示例代码,可以在IDLE中按下Ctrl+C来终止循环:import tkinter as tktk = tk.Tk()def on_key(event): if event.char == 'q': tk.quit()def action(): print("打倒反贼苏沪!") tk.after(1000, action)# 捕获键盘中断信号signal.signal(signal.SIGINT, lambda *_: tk.quit())# 绑定按键事件tk.bind('', on_key)# 延迟1秒后开始执行action函数tk.after(1000, action)# 开启主循环tk.mainloop()请将这段修正后的代码复制到IDLE中运行,然后尝试按下Ctrl+C来终止循环。希望这次的回答能够正确解决你的问题。如果还有其他疑问,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-16 22:05
非常抱歉,我之前的回答还是有误导性。在IDLE中,由于其特殊的交互模式,无法在同一进程中通过多线程运行 ...
修改后的代码如下:
import tkinter as tk
tk = tk.Tk()
def on_key(event):
if event.char == 'q':
tk.quit()
def action():
print("打倒反贼苏沪!")
tk.after(1000, action)
#捕获键盘中断信号
signal.signal(signal.SIGINT,lambda*_:tk.quit())
#绑定按键事件
tk.bind('<KeyPress>', on_key)
#延迟1秒后开始执行action函数
tk.after(1000, action)
#开启主循环
tk.mainloop()
run module 后提示如下:
= RESTART: D:/OneDrive/桌面/打倒反贼.py
Traceback (most recent call last):
File "D:/OneDrive/桌面/打倒反贼.py", line 13, in <module>
signal.signal(signal.SIGINT,lambda*_:tk.quit())
NameError: name 'signal' is not defined. Did you forget to import 'signal'?
我心态崩了{:10_245:} linying002 发表于 2023-12-16 22:11
修改后的代码如下:
import tkinter as tk
tk = tk.T ...
非常抱歉,我忽略了一点,在使用`signal`模块之前需要先导入它。这是一个常见的错误,不用担心。请将代码中开头的`import signal`添加到代码的开头处,像这样:import signalimport tkinter as tktk = tk.Tk()# ...后续代码不变...现在,尝试再次运行代码,应该就能够正常捕获键盘中断信号并结束循环了。如果还有其他问题,请随时提问,我会尽力帮助你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 在我的电脑里,下载了Python3.12,高版本的Python会自己停止死循环
下载:https://fishc.com.cn/thread-237835-1-1.html hveagle 发表于 2023-12-17 13:02
在我的电脑里,下载了Python3.12,高版本的Python会自己停止死循环
下载:https://fishc.com.cn/thread-23 ...
我也是Python 3.12, 并没有自己停止死循环,都是我强制关掉的。
页:
1
[2]