3

フレーム内にキャンバスがあり、キャンバスは 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()

結果は次のとおりです。

余白のあるキャンバス

小さな正方形が描かれた後、キャンバスの右側と下部にある白い溝は避けたいと思います。

4

2 に答える 2

5

キャンバスには、borderwidth属性によって制御される境界線があります。highlightthicknessまた、属性によって制御される別の境界線もあります。これらの両方をゼロに設定すると、キャンバスは設定したサイズと正確に一致するはずです。

通常、このborder属性は 3D 効果 (盛り上がった境界線、くぼんだ境界線、またはその他のいくつかのバリエーション) を提供するために使用されます。(highlightthicknessおよびhighlightcolor) 属性は、ウィジェットにキーボード フォーカスがあることを示すために使用される実線のアウトラインを定義します。

于 2013-04-09T02:15:18.800 に答える
0

私はこれらの変更を加えました:

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

正しく描画されます。グレーの境界線が 4 辺すべてで正しいことがわかります。

ここに画像の説明を入力

于 2013-04-09T02:08:45.173 に答える