Tkinter Can';t从函数中调用多个项

Tkinter Can';t从函数中调用多个项,tkinter,python-3.5,Tkinter,Python 3.5,我正在创建一个类似于atari游戏的游戏;杆位。我想弄清楚,每次有人越过起跑线时,如何让随机的车出现。我打电话给不止一辆随机的车有困难。我没有收到任何错误消息。下面是我的代码。(如果你对如何让赛车出现在赛道上有什么建议,那也会很有帮助)我是一个编程新手,现在仍在努力解决这个问题。谢谢你的建议 import random import time class Game: def __init__(self): self.tk = Tk() se

我正在创建一个类似于atari游戏的游戏;杆位。我想弄清楚,每次有人越过起跑线时,如何让随机的车出现。我打电话给不止一辆随机的车有困难。我没有收到任何错误消息。下面是我的代码。(如果你对如何让赛车出现在赛道上有什么建议,那也会很有帮助)我是一个编程新手,现在仍在努力解决这个问题。谢谢你的建议

import random
import time
class Game:
    def __init__(self):
            self.tk = Tk()
            self.tk.title("Car Game")
            self.tk.resizable(0, 0)
            self.tk.wm_attributes("-topmost", 1)
            self.canvas = Canvas(self.tk, width=1280, height=750,  bd=0, highlightthickness=0)
            self.canvas.pack()
            self.tk.update()
            self.bg = PhotoImage(file="road.gif")
            self.canvas.create_image(0, 0, image=self.bg, anchor='nw')


    def your_car_sprite(self):
        self.yourCar = PhotoImage(file="carForgame.gif")
        self.canvas.create_image(850,570,image=self.yourCar, anchor='nw')

    def random_cars_sprite(self):
        x = random.randint(0,1280)
        y = random.randint(0,750)
        self.randomCar = PhotoImage(file='Car2.gif')
        self.canvas.create_image(x, y, image=self.randomCar, anchor='nw')
        for i in range(1,5):
            self.canvas.create_image(x, y, image=self.randomCar, anchor='nw')

    def mainloop(self):    
        while 1:
            self.tk.update_idletasks()
            self.tk.update()
            time.sleep(0.01)



g = Game()
g.your_car_sprite()
rCars = g.random_cars_sprite()
main = mainloop()

我知道你的随机汽车不会出现的两个原因:

  • 首先,您只定义一次随机位置,因此所有随机车辆将显示在彼此的顶部
  • 其次,在使用
    PhotoImage
    时,必须保留对每个不同图像的引用(请参阅和)
以下是您可以修复它的方法:

def random_cars_sprite(self):
    self.randomCars = []
    for i in range(1,5):
        x = random.randint(0,1280)
        y = random.randint(0,750)
        randomCar = PhotoImage(file=os.path.join(folder, "purple.png"))
        self.canvas.create_image(x, y, image=randomCar, anchor='nw')
        self.randomCars.append(randomCar)

为什么要编写自己的
mainloop
方法?这比仅仅调用tkinter提供的
mainloop
方法效率要低。你能解释一下如何调用我自己的mainloop函数吗?我没有看到任何用于起始线的代码,或者我看到任何用于移动对象的代码。我还没有做到这一点。我只是想在我走得更远之前把车放到画布上。在
游戏
类中调用
self.tk.mainloop()
,或者在类外调用
g.tk.mainloop()
。谢谢。我试试看。