簡體   English   中英

有使用tkinter創建許多多邊形的捷徑嗎?

[英]Is there a shortcut for creating many polygons with tkinter?

我需要創建一個如以下圖片所示的三角形網格: https : //www.tilelook.com/system/tile_picture/resource/4973584/d3d_default_RE04MC017.png

因為我希望三角形是可單擊的,所以我使用畫布函數create_polygon進行繪制,並使用bind函數來偵聽click事件。 問題是我需要繪制許多三角形,這將需要手工計算每個三角形的頂點。

有沒有更快的方法,例如繪制一些平行和相交的線並告訴tkinter頂點是這些線的交點或不涉及計算每個三角形的頂點的東西?

雖然您無法從tkinter內獲取交點,但可以改為使用一對for循環制作三角形,然后將其繪制在畫布上。 一個例子如下:

import tkinter as tk
import random

def make_triangles(row_height=60, tri_width=60, max_height=1800, max_width=1800):
    triangle_list = []
    half_width = int(tri_width/2)
    for i in range(0, max_height, row_height):
        for j in range(0, max_width, half_width):
            if j % tri_width == 0:
                triangle = (i, j-half_width, i+row_height, j, i, j+half_width)
            else:
                triangle = (i, j, i+row_height, j+half_width, i+row_height, j-half_width)
            triangle_list.append(triangle)
    return triangle_list

win = tk.Tk()
canv = tk.Canvas(win)
triangles = make_triangles()
for tri in triangles:
    canv.create_polygon(tri, fill=random.choice(["blue", "red", "green", "brown", "yellow", "black"]))
canv.pack()
win.mainloop()

在這里,我們只是生成許多三角形,然后將它們依次繪制到畫布上(我們不必手動找到每個頂點,只需一個描述所有頂點的公式即可)。 雖然這不能解決您的確切問題,因為三角形不相交(您必須每隔一行將三角形移動一半),並且三角形向左/向右而不是向上/向下,但確實可以回答您的問題“ 是否有使用tkinter創建許多多邊形的捷徑 ”! 答案是只列出多邊形,然后將它們全部繪制出來。 我的代碼的示例輸出(您的會有所不同,因為它是隨機的)看起來像:

產生的三角形

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM