tkinter先堵塞程序,等到button按钮按下再执行怎么弄

这个问题之前问过一回了,问题:

img


然后有人回答:

img


没仔细看就直接点采纳了,结果运行出来报错了,第12行,报错信息:AttributeError: 'IntVar' object has no attribute 'wait_variable'
代码有什么不对吗?正确的应该怎么弄?

你为什么要堵塞程序,按钮按下之前不执行任何代码,按钮按下再调用你要执行的函数不就得了
程序要是堵塞了,那UI也被堵塞了,按钮事件也没人响应了,你程序就假死了,无响应了

可以使用 tkinter 的 after 方法来停止程序的运行,直到按钮被点击。

具体实现方法如下:

在循环内部,在设置按钮之后使用 after 方法停止程序运行。例如,可以使用 a.after(1000) 来停止程序运行 1 秒钟。

在按钮的回调函数中,使用 after_cancel 方法取消之前设置的延迟。例如,可以使用 a.after_cancel(1000) 来取消 1 秒的延迟。

在回调函数中继续执行后面的程序。

代码如下:

import tkinter as tk

a = tk.Tk()
a.geometry("800x500")

def ggg():
    global b
    while True:
        b = tk.Button(a, text="点我", width=10, height=2, command=click_b)
        b.place(x=10, y=10)
        a.after(1000) # 停止程序运行 1 秒钟

def click_b():
    b.place_forget()a.after_cancel(1000) # 取消延迟
c = tk.Button(a, text="测试", width=15, height=2, command=ggg)
c.place(x=100, y=100)
# 在此继续执行后面的程序

c = tk.Button(a, text="开始", width=15, height=2, command=ggg)
c.place(x=100, y=100)
a.mainloop()

此时,程序会在循环内部一直停止运行,直到按钮被点击,然后继续执行后面的程序。

这个事情告诉你,字多,不代表正确,这些人一直在刷榜单,有些内容我怀疑他们自己都没有看,就给你回复了