创建类似对象的简短方法是什么?

Tan*_*ane -1 python tkinter

from tkinter import *

height = 600
width = 600
root = Tk()
canvas = Canvas(root, width = width, height = height, bg = 'red3')
canvas.pack()

# Code for Fries
canvas.create_polygon(150, 100, 160, 250, 170, 250, 160, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(160, 100, 170, 250, 180, 250, 170, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(170, 100, 180, 250, 190, 250, 180, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(180, 100, 190, 250, 200, 250, 190, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(190, 100, 200, 250, 210, 250, 200, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(200, 100, 210, 250, 220, 250, 210, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(210, 100, 220, 250, 230, 250, 220, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(220, 100, 230, 250, 240, 250, 230, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(230, 100, 240, 250, 250, 250, 240, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(240, 100, 250, 250, 260, 250, 250, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(250, 100, 260, 250, 270, 250, 260, 80, fill = 
'yellow',  outline = 'black')
canvas.create_polygon(260, 100, 270, 250, 280, 250, 270, 80, fill = 
'yellow',  outline = 'black')

# Packet
packet = canvas.create_polygon(200, 500, 400, 500, 450, 200, 150, 200, fill 
= 'red4', outline = 'black')

# i'm lovin' it  Text
canvas.create_text(300, 550, text = 'i\'m lovin\' it', fill = 'yellow', font 
= ('Comic Sans MS', 23))
canvas.create_text(300, 350, text = 'M', font = ('mclawsuit', 110), fill = 
'yellow')
canvas.mainloop()
Run Code Online (Sandbox Code Playgroud)

我不想重复create_polygon用于薯条的代码.我尝试使用函数和类,但早期的薯条死了,只有最后一个鱼苗是可见的休息是黑色的.

Mr.*_*un. 6

这应该可以解决问题

# code for fries
fries_polygons = [
    (150, 100, 160, 250, 170, 250, 160, 80),
    (160, 100, 170, 250, 180, 250, 170, 80),
    (170, 100, 180, 250, 190, 250, 180, 80),
    (180, 100, 190, 250, 200, 250, 190, 80),
    (190, 100, 200, 250, 210, 250, 200, 80),
    (200, 100, 210, 250, 220, 250, 210, 80),
    (210, 100, 220, 250, 230, 250, 220, 80),
    (220, 100, 230, 250, 240, 250, 230, 80),
    (230, 100, 240, 250, 250, 250, 240, 80),
    (240, 100, 250, 250, 260, 250, 250, 80),
    (250, 100, 260, 250, 270, 250, 260, 80),
    (260, 100, 270, 250, 280, 250, 270, 80),
]

for fry in fries_polygons:
    canvas.create_polygon(*fry, fill='yellow', outline='black')
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读有关*-operator用于解压缩任意列表参数的内容.

  • 你不需要使用`*fry`,`create_polygon`可以取一个元组而不是一个点列表. (2认同)