gpt4 book ai didi

Python tkinter 启动和停止循环?

转载 作者:行者123 更新时间:2023-12-01 05:29:58 24 4
gpt4 key购买 nike

我一直在尝试制作一个带有 2 个按钮的程序,按其中一个按钮将启动无限循环,按另一个按钮将停止它。

我尝试过的所有方法都会暂停循环。

from Tkinter import *
import time
s = 0

def stopit():
s = 1
print "stoped"
#
def callback():

if s == 0:
while True:
print "called the callback!"
time.sleep(3)
if s == 1:
break
#
#
#
#

root = Tk()

def main():


# create a menu
menu = Menu(root)
root.config(menu=menu)

b = Button(root, command=stopit)
b.pack()


filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=callback)
filemenu.add_command(label="Open...", command=callback)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=callback)

helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=callback)

mainloop()
time.sleep(3)
#

main()

最佳答案

您的代码有两个问题:

  • 您的回调方法永远不会完成(由于无限循环),导致 GUI 卡住。相反,请使用 after 方法在该方法完成后安排再次执行callback
  • 您的 stopit 方法创建一个局部变量 s,而不是更改全局变量。使用 global 关键字来解决此问题。

将这两个方法更改为如下所示,它应该可以工作:

def stopit():
global s
s = 1
print "stopped"

def callback():
if s == 0:
print "called the callback!"
root.after(3000, callback)

关于Python tkinter 启动和停止循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457148/

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