tkinter多边形

时间:2017-09-06 18:50:37

标签: python python-3.x tkinter

我对tkinter来说比较新,而且我制作的游戏只使用了正方形。我复制的书只显示三角形。这是代码:

# The tkinter launcher (Already complete)
from tkinter import *
HEIGHT = 500
WIDTH = 800
window = Tk()
window.title ('VOID')
c = Canvas (window, width=WIDTH, height=HEIGHT, bg='black')
c.pack()
# Block maker (Issue)
ship_id = c.create_polygon (5, 5, 5, 25, 30, 15, fill='red')

我没有收到任何错误,只是一串数字,(5, 5, 5, 25, 30, 15)我不会得到,因为我正试图制作一个正方形。

2 个答案:

答案 0 :(得分:2)

摘要Canvas.create_polygon definition

  

如图所示,多边形有两个部分:轮廓和内部。它的几何被指定为一系列顶点[(x0,y0),(x1,y1),...(xn,yn)](...)

     

id = C.create_polygon(x0, y0, x1, y1, ..., option, ...)

所以你需要按照指定的顺序传递方块的坐标。 例如:

myCanvas.create_polygon(5, 5, 5, 10, 10, 10, 10, 5)

可以读作

myCanvas.create_polygon(5,5, 5,10, 10,10, 10,5)

将创建一个顶点为(5, 5)(5, 10)(10, 10)(10, 5)的正方形。

答案 1 :(得分:1)

Here's create_polygon函数(official docs)上的一些信息。

根据nmt.edu页面,函数调用的格式为

id = C.create_polygon(x0, y0, x1, y1, ..., option, ...)

这意味着ship_id = c.create_polygon (5, 5, 5, 25, 30, 15, fill='red')调用会创建一个包含以下顶点的多边形:(5,5), (5,25), (30, 15)并用红色填充多边形。

如果您想创建一个正方形,则必须执行以下操作:

ship_id = c.create_polygon (5, 5, 5,  25, 25, 25, 25, 5,  fill='red')

创建一个带顶点(5,5),(5,25),(25,25),(25,5)的矩形。

如果你想要一种更可重复的制造船只的方法,你可以做类似的事情

def ship (x,y): 
    return [x-5, y-5, x+5, y-5, x+5, y+5, x-5, y+5]
ship_id = c.create_polygon(*ship(100, 500),  fill='red')

上面将创建一种船舶工厂(lambda函数),在其中指定船舶中心的x和y,然后它给出了可用于{{1的顶点的列表功能。

您甚至可以通过调整lambda函数

进一步指定船舶尺寸
create_polygon