gpt4 book ai didi

python - While 循环导致整个程序在 Tkinter 中崩溃

转载 作者:行者123 更新时间:2023-11-28 19:43:52 27 4
gpt4 key购买 nike

我正在尝试运行一个 While 循环以不断做某事。目前,它所做的只是让我的程序崩溃。

这是我的代码:

import tkinter
def a():
root = tkinter.Tk()
canvas = tkinter.Canvas(root, width=800, height=600)
while True:
print("test")

a()

它将循环 print 语句,但是实际的 Canvas 拒绝打开。

是否有可以与 Tkinter 一起工作的任何可行的无限循环?

额外信息当我删除 While True 语句时, Canvas 再次出现。

最佳答案

Tkinter 挂起,除非它可以执行自己的无限循环,root.mainloop。通常,您不能与 Tkinter 的无限循环并行运行您自己的无限循环。但是,还有一些替代策略:

之后使用

after是一种 Tkinter 方法,它会导致目标函数在一定时间后运行。您可以通过使函数自身调用 after 来重复调用函数。

import tkinter

#this gets called every 10 ms
def periodically_called():
print("test")
root.after(10, periodically_called)

root = tkinter.Tk()
root.after(10, periodically_called)
root.mainloop()

还有root.after_idle , 一旦系统没有更多事件要处理,它就会执行目标函数。如果您需要比每毫秒一次更快的循环,这可能更可取。

使用线程

threading模块允许您并行运行两段 Python 代码。使用此方法,您可以同时运行任意两个无限循环。

import tkinter
import threading

def test_loop():
while True:
print("test")

thread = threading.Thread(target=test_loop)
#make test_loop terminate when the user exits the window
thread.daemon = True
thread.start()

root = tkinter.Tk()
root.mainloop()

但请注意:从主线程以外的任何线程调用 Tkinter 方法可能会导致崩溃或导致异常行为。

关于python - While 循环导致整个程序在 Tkinter 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25731997/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com