1

Pythonでtkinterを使用してオセロGUIを構築するにはどうすればよいですか? 具体的には、最初の 4 つのピースを表示させることから始めるにはどうすればよいでしょうか? 正方形を選択したときにボードにピースの位置を出力するにはどうすればよいですか? これまでのところ、ピースをクリックすると「[189.0, 126.0, 252.0, 189.0]」と出力されます。私は本当にガイダンスを探しているだけです。どんな助けでも大歓迎です! ここに私がこれまでに持っているコードがあります。

import tkinter
class RA:
    def __init__(self):
        self._columns = 8
        self._rows = 8
        self._root = tkinter.Tk()
        self._canvas = tkinter.Canvas(master = self._root,
                                      height = 500, width = 500,
                                      background = 'green')
        self._canvas.pack(fill = tkinter.BOTH, expand = True)
        self._canvas.bind('<Configure>',self.draw_handler)


    def run(self):
        self._root.mainloop()

    def draw(self):
        for c in range(self._columns):
            for r in range(self._rows):
                x1 = c * (column_width)
                y1 = r * (row_height)
                x2 = x1 + (column_width)
                y2 = y1 + (row_height)

    def clicked(self,event: tkinter.Event):
        x = event.x
        y = event.y
        coordinates = self._canvas.coords("current")
        print(coordinates)

    def draw(self):
        self._canvas.delete(tkinter.ALL)
        column_width = self._canvas.winfo_width()/self._columns
        row_height = self._canvas.winfo_height()/self._rows
        for  x in range(self._columns):
            for y in range(self._rows):
                x1 = x * column_width
                y1 = y * row_height
                x2 = x1 + column_width
                y2 = y1 + row_height
                r = self._canvas.create_rectangle(x1,y1,x2,y2,fill = 'blue')
                self._canvas.tag_bind(r,'<ButtonPress-1>',self.clicked)

                self._canvas.create_rectangle(x1,y1,x2,y2)
        self._canvas.bind('<Configure>',self.draw_handler)


    def draw_handler(self,event):
        self.draw()


r = RA()
r.run()
4

1 に答える 1

4

を使用してディスクを描画しますcanvas.create_oval(bbox, **options)

タグを使用してキャンバス アイテムを区別します。

タグは、アイテムに付けられる象徴的な名前です。タグは通常の文字列で、空白以外のものを含めることができます。

各セルの各要素(長方形と楕円形)にタグを付けて、それを認識できるようにすることをお勧めします。

item = canvas.create_oval(x1, x2, y1, y2, tags=("x=1","y=3"))

アイテムをクリックすると、そのすべてのタグを取得できます

canvas.gettags(item)

"x="次に、すべてのタグを繰り返します。タグがまたは で始まる場合"y="は、行/列の情報が含まれており、これを使用して抽出できます。int(tagname[2:])

于 2015-06-03T20:26:16.407 に答える