我目前正在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,我期望结果是每秒添加一个图像。
答案 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 )
的参数:
ms =毫秒
func =不带括号的函数after()
,()
只希望引用该函数。
参数 =函数的参数(如果有)
您还为每个after
函数赋予了1000ms的时间,这意味着它们都在1秒后被调用。
after