【发布时间】:2019-03-26 18:56:17
【问题描述】:
所以我在 python 中创建生活游戏,并想使用 python 的 tkinter 类在画布上创建一个网格。提前致谢。
为了制作网格,我使用了画布类的 create_line() 函数并使用 range() 函数进行循环,以便使用两个单独的 for 循环将线条绘制到画布的宽度和高度一个用于宽度,一个用于高度。我得到的循环取自 stackoverflow 上的以下代码:How to create a grid on tkinter in python? 我以为我明白正在发生的事情,但我认为应该发生的事情却没有发生
from tkinter import *
from random import *
window = Tk()
window.title('Game Of Life')
canvas = Canvas(window, background='white', width=800, height=600)
def create_grid(canvas):
width = canvas.winfo_width() # gets width of the canvas
height = canvas.winfo_height() # gets height of the canvas
for line in range(0, width, 1): # range(start, stop, step)
canvas.create_line([(line, 0), (line, height)], fill='black', tags='grid_line_w')
for line in range(0, height, 1):
canvas.create_line([(0, line), (width, line)], fill='black', tags='grid_line_h')
create_grid(canvas)
canvas.grid(row=0, column=0)
window.mainloop()
我的预期结果是有一个白色画布,垂直和水平线延伸画布的宽度和高度。但我的实际结果只是一个顶部没有线条的白色画布。
【问题讨论】:
-
您可以使用
winfo_reqwidth()和winfo_reqheight()代替winfo_width()和winfo_height()。
标签: python canvas tkinter grid window