为什么300 * 300椭圆形无法完美贴合300 * 300 Canvas?

时间:2015-12-31 13:41:26

标签: python tkinter

from Tkinter import *


class Ball:
    def __init__(self, canvas, x1, y1, x2, y2):
        self.x1 = x1
        self.y1 = y1
        self.x2 = x2
        self.y2 = y2
        self.canvas = canvas
        self.ball = canvas.create_oval(self.x1, self.y1, self.x2, self.y2, fill="red")

# initialize root Window and canvas
root = Tk()
root.title("Balls")
root.resizable(False, False)
canvas = Canvas(root, width=300, height=300)
canvas.pack()

# create ball objects
ball = Ball(canvas, 0, 0, 300, 300)
root.mainloop()

如你所见,我在300 * 300帆布上画了一个300 * 300的椭圆形,但是椭圆形并没有完美地适合画布。结果是(Mac OS):

enter image description here

所以我的问题是:

  1. 为什么它不完美?
  2. 我应该怎么做以避免这些尴尬的事情?
  3. 编辑:

    ball = Ball(canvas, 1, 1, 299, 299)也不起作用,它给出了:

    enter image description here

1 个答案:

答案 0 :(得分:3)

画布的可绘制区域默认小于画布的总宽度和高度。总大小包括小部件边框和高亮环。如果您希望可绘制区域是宽度和高度的100%,则需要将画布的borderwidthhighlightthickness属性设置为0(零)。