编写绘制立方体的函数。我无法制作完整的立方体,只能制作 y 轴立方体(文本中有更多信息)

Writing a function that draws a cube. I can't manage to make a full cube, just the y axis cube (more info in text)

def graphics ():
window = tkinter.Tk()
window.geometry("800x800")  #You enter the window dimensions for 
canvas = tkinter.Canvas(window, bg = 'white', width=800, height=800)
#Code for creating graphical shapes
#  note for me: im going to make a graphical drawing that draws a the sizes of the cubes user wants ! (so if there's a 2x2 cube, 3x3, and 4x4, ima draw those (2d only)
user_size = input("What size cube would you like to have drawn? (3x3, 2x2, ...): ")
user_size.split()
cube_size = int(user_size[0])
cube_size += 1
counter = 0
cube_y = 800
cube_y2 = 700
cube_x = 100
cube_x2 = 200
counter = 1
e = 'red'
 
while (counter != cube_size):

    y = canvas.create_polygon(100,cube_y,200,cube_y,200,cube_y2,100,cube_y2, fill = e, outline = 'black', width = 7)
 
    
    cube_y = cube_y - 100
    cube_y2 = cube_y2 - 100
   
    
    print(counter)
    counter+= 1

#Flips the shapes from memory onto the monitor
canvas.pack()


window.mainloop()

正如标题所说,我想为学校制作一个画魔方的程序。本质上,用户输入立方体的大小(3x3、4x4、...),程序读取输入大小的第一个数字。因此,如果用户写入 3x3,程序将读取开头的数字“3”。

从那里,程序将 运行 y = canvas.create_polygon(100,cube_y,200,cube_y,200,cube_y2,100,cube_y2, fill = e, outline = 'black', 创建一个 100x100 像素宽的红色块。与循环 运行 一样多的次数,块将上升 100 像素(它会上升 y-axis)。例如,如果用户输入 3x3,y 代码块将生成 3 次,每次都会增加 100 px。 this is what it looks like if i enter 3x3

我需要帮助的是处理 x 轴。我已经设法让程序在垂直轴上绘制立方体,但我无法在水平轴上进行管理。 我的计划是基本上让代码 y = canvas.create_polygon(100,cube_y,200,cube_y,200,cube_y2,100,cube_y2, fill = e, outline = 'black' 运行 与计数器一样多,但每次,多边形的 x 点都向右移动 100 像素。

所以对于前。如果我要求绘制 4x4 的立方体,程序将首先使用我之前提到的 y = canvas.create_polygon() 代码绘制 4 个 up/vertical/y-axis 的立方体,然后它会绘制相同的形状但是这次整个代码将在 x 轴上水平向右移动 100 像素。最终产品应该看起来像 this(请原谅我用鼠标在 google jamboard 上画的烂图)

如果有人对此有任何想法,请告诉我。并提前为文字墙道歉!谢谢!

这是我写的代码,这是给你一个开始,它并不完美,但你可以根据需要调整立方体的大小,window。

我实现了一个遍历列和行的循环,设置为立方体大小。如果立方体大小设置为 3,循环将从 1 到 3 并绘制每个形状。使用 canvas.create_rectangle(tileSize * col, tileSize * row, tileSize * col + tileSize, tileSize * row + tileSize, fill='red').

绘制形状

tileSize * col = 50*1, 50*2, 50*3 == 50, 100, 150 tileSize * row

也是一样

第二个 xy+ tileSize 上方的 x 和 y,这使得每个矩形为 50x50 像素。您可以根据自己的喜好调整尺寸和位置。

调整这部分:canvas.create_rectangle(tileSize * col, tileSize * row, tileSize * col + tileSize, tileSize * row + tileSize, fill='red') 改变立方体开始绘制的位置。

调整这部分:canvas.create_rectangle(tileSize * col, tileSize * row, tileSize * col + tileSize, tileSize * row + tileSize , fill='red') 为每个正方形的大小。

from tkinter import *


def graphics():
    window = Tk()
    window.geometry("800x800")  # You enter the window dimensions for

    # tile/window sizes
    tileSize = 50
    x = tileSize * 5
    y = tileSize * 5

    canvas = Canvas(window, bg='white', width=x, height=y)

    cols = int(input('What size cube do you want?: '))
    rows = cols


    for col in range(cols):
        for row in range(rows):
            canvas.create_rectangle(tileSize * col, tileSize * row, tileSize * col + tileSize, tileSize * row + tileSize, fill='red')

    # Flips the shapes from memory onto the monitor
    canvas.pack()

    window.mainloop()


graphics()