[英]tkinter canvas in grid has extra space
我在框架内有一个画布,我说画布应该是250x250。 但是由于某种原因,它被创建得更大了,右侧和底部都有额外的空间。 这是我的代码...有什么想法吗?
from tkinter import *
from tkinter import ttk
from player import player0
alpha = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z')
class GUI(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.boardsize = 250
self.sqsize = self.boardsize//5
master.title("Canvas with extra space")
self.initialdraw()
self.grid(row=0,column=0)
def initialdraw(self):
mainframe = ttk.Frame(self, padding=(5,5,5,5))
mainframe.grid(column=0, row=0, sticky=(N, S, E, W))
self.board = Canvas(mainframe, width=self.boardsize, height=self.boardsize,bg='white')
self.board.grid(row=1,column=0)
for row in range(5):
for col in range(5):
top = row * self.sqsize
left = col * self.sqsize
bottom = row * self.sqsize + self.sqsize -2
right = col * self.sqsize + self.sqsize -2
rect = self.board.create_rectangle(left,top,right,bottom,outline='gray',fill='')
self.board.focus_set()
if __name__ == '__main__':
tk = Tk()
gui = GUI(tk)
tk.mainloop()
结果是这样的:
在绘制较小的正方形之后,我宁愿避免在画布的右侧和底部出现白色的装订线。
画布具有边框,由borderwidth
属性控制。 它还具有另一个由highlightthickness
属性控制的边框。 将两者都设置为零,并且画布的大小应与设置大小相同。
border
属性通常用于提供3D效果-凸起的边框,下陷的边界或其他几种变化。 highlightthickness
(和highlightcolor
)属性定义了一个实心轮廓,用于表示小部件具有键盘焦点。
我进行了以下更改:
self.boardsize = 249
self.sqsize = 50#self.boardsize//5
和
top = row * self.sqsize +2
left = col * self.sqsize +2
bottom = row * self.sqsize + self.sqsize
right = col * self.sqsize + self.sqsize
它将正确绘制。 您会看到灰色边框线在所有四个侧面上都是正确的:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.