亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 tkinter 中快速制作多種形狀

如何在 tkinter 中快速制作多種形狀

慕蓋茨4494581 2023-07-05 10:06:27
我正在嘗試使用 tkinter 中的 Canvas 制作形狀,并且進展順利。不過,我正在嘗試使用隨機數制作動畫,其中不同大小的盒子在屏幕上移動。我想知道創建大約 20 或 30 個形狀,然后能夠移動它們并改變顏色,而不需要為每個形狀創建一行代碼,然后稍后引用它,最 Pythonic 的方法是什么。然后我可以使用該函數使形狀具有不同的大小randint。
查看完整描述

1 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

您可以循環創建多個項目。將項目 ID 保存在列表中,然后您可以迭代這些項目來移動它們。


下面的示例在隨機位置創建 100 個具有隨機顏色的項目,然后為它們在每次迭代中以隨機數量下落設置動畫。


import tkinter as tk

import random


root = tk.Tk()


canvas = tk.Canvas(root, bg="black", width=400, height=400)

canvas.pack(fill="both", expand=True)


items = []

for i in range(100):

    x = random.randint(10, 490)

    y = random.randint(10, 490)

    size = random.randint(20,50)

    color = random.choice(("red", "orange", "green", "blue", "white", "yellow"))

    item_id = canvas.create_rectangle(x, y, x+size, y+size, fill=color, outline="white")

    items.append(item_id)


def animate():

    for item_id in items:

        distance = random.randint(0, 5)

        canvas.move(item_id, 0, distance)

    canvas.after(100, animate)


animate()

root.mainloop()

這是一種面向對象的方法,我們使用類來定義項目,并且類實例可以為自身設置動畫。


import tkinter as tk

import random


class RandomItem:

    def __init__(self, canvas):

        self.canvas = canvas

        self.velocity = random.randint(1,5)

        x = random.randint(10, 490)

        y = random.randint(10, 490)

        size = random.randint(20,50)

        color = random.choice(("red", "orange", "green", "blue", "white", "yellow"))

        self.item_id = canvas.create_rectangle(x, y, x+size, y+size, fill=color)

        self.fall()


    def fall(self):

        self.canvas.move(self.item_id, 0, self.velocity)

        self.canvas.after(100, self.fall)



root = tk.Tk()


canvas = tk.Canvas(root, bg="black", width=500, height=500)

canvas.pack(fill="both", expand=True)


for i in range(100):

    item = RandomItem(canvas)


root.mainloop()


查看完整回答
反對 回復 2023-07-05
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號