Tkinter .after模块只是延迟了GUI的打开

时间:2019-04-27 15:48:37

标签: python canvas tkinter

我目前正在tkinter GUI上使用python将BlackJack游戏编程为第一个项目。

我正在尝试使用after模块使卡每秒出现在GUI上,但是此代码只是延迟了GUI的打开并打开了已有的图像。经过大量研究和不同测试,我仍然得到相同的结果。

这是代码的简化版本

from tkinter import *


window = Tk()

canvas = Canvas(window, width=300, height=300)
canvas.pack()


def add(image, x, y):
    canvas.create_image(x, y, image=image)


image1 = PhotoImage(file="images/AceHearts.png")
image2 = PhotoImage(file="images/AceClubs.png")
image3 = PhotoImage(file="images/AceDiamonds.png")

canvas.after(1000, add(image1, 50, 50))
canvas.after(1000, add(image2, 70, 50))
canvas.after(1000, add(image3, 90, 50))

window.mainloop()

如果打开GUI,我期望结果是每秒添加一个图像。

1 个答案:

答案 0 :(得分:1)

您基本上是在调用#include <iomanip> #include <iostream> //intermediate code goes here std::cout << minutes << ":" << std::setfill('0') << std::setw(2) << seconds << "." << std::setw(3) << milliseconds << std::endl; 函数,并将add()的值传递给这些行中的所有回调,因为None返回add()

None

仔细查看丢失的内容。 canvas.after(1000, add(image1, 50, 50)) canvas.after(1000, add(image2, 70, 50)) canvas.after(1000, add(image3, 90, 50)) 函数的语法为

  

after()

after( ms, func, args )的参数:

  1. ms =毫秒

  2. func =不带括号的函数after()()只希望引用该函数。

  3. 参数 =函数的参数(如果有)

您还为每个after函数赋予了1000ms的时间,这意味着它们都在1秒后被调用。


正确的做法。

after