在Tkinter中按下按钮时,如何使用功能执行多个任务?

问题描述

因此,我的计划是创建其中一个游戏序列显示在屏幕上的游戏,并且您必须在序列之后单击正确的按钮。我将在该项目中使用Tkinter。这里是一些解释:单击任何按钮时,将使用一个参数来执行一个函数,该参数将告诉您单击了哪个按钮,然后该函数将检查它是否为正确的按钮。

问题:如果用户单击了右按钮,则此函数调用第二个函数显示序列的下一个按钮。关键是要花一些时间才能显示出来,同时tkinter按钮保持“单击”状态。我不希望发生这种情况,也是因为在发生这种情况时,您无法执行其他任务,例如离开游戏或重新开始比赛。

如果您还没有看到问题,这里有一个简单的示例向您展示问题:

import tkinter as tk
from time import sleep

def func():
    print('hi')
    func2()

def func2():
    print('hi2')
    for num in range(3,11):
        sleep(1)
        print('hi' + str(num)) 

wn = tk.Tk()
b1 = tk.Button(wn,command=func)
b1.pack()
wn.mainloop()

在这种情况下,当按下按钮时,代码应打印'hi'+ 1到10之间的数字。但是,我之前所说的事情发生了。

如何使上面的示例以及我的项目正常工作?

解决方法

您可以使用threads,也可以定义运行func1和func2的func3。