2015-06-03 3 views
0

Как я могу построить графический интерфейс Othello с помощью tkinter в python? В частности, как я начну с появления первых четырех частей? Как я могу получить мой совет, чтобы распечатать позицию части, когда я выбираю квадрат? Пока он печатает «[189.0, 126.0, 252.0, 189.0]» при нажатии на кусок. Я действительно просто ищу руководство, любая помощь очень ценится! Вот код, который у меня есть.Строительство игры Othello с использованием Tkinter (Python)

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() 

ответ

2

Нарисуйте диски, используя 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:])

Смежные вопросы