Как создать интерактивную сетку python с помощью tkinter и excel - PullRequest
0 голосов
/ 10 июля 2020

Я хочу знать, как создать сетку, которая подключается к файлу Excel или текстовому файлу, и при запуске она показывает, кто должен находиться в этом пространстве сетки в течение дня, и может обновляться ежедневно в файле Excel. Это код, который я нашел / нашел, но я хочу подключить этот GUI к файлу Excel. Заранее благодарим за внимание!

from tkinter import *

class Cell():
    FILLED_COLOR_BG = "green"
    EMPTY_COLOR_BG = "white"
    FILLED_COLOR_BORDER = "green"
    EMPTY_COLOR_BORDER = "black"

def __init__(self, master, x, y, size):
    self.master = master
    self.abs = x
    self.ord = y
    self.size= size
    self.fill= False

def _switch(self):
    self.fill= not self.fill

def draw(self):
    if self.master != None :
        fill = Cell.FILLED_COLOR_BG
        outline = Cell.FILLED_COLOR_BORDER

        if not self.fill:
            fill = Cell.EMPTY_COLOR_BG
            outline = Cell.EMPTY_COLOR_BORDER

        xmin = self.abs * self.size
        xmax = xmin + self.size
        ymin = self.ord * self.size
        ymax = ymin + self.size

        self.master.create_rectangle(xmin, ymin, xmax, ymax, fill = fill, outline = outline)

class CellGrid(Canvas):
    def __init__(self,master, rowNumber, columnNumber, cellSize, *args, **kwargs):
        Canvas.__init__(self, master, width = cellSize * columnNumber , height = cellSize * rowNumber, *args, **kwargs)

    self.cellSize = cellSize

    self.grid = []
    for row in range(rowNumber):

        line = []
        for column in range(columnNumber):
            line.append(Cell(self, column, row, cellSize))

        self.grid.append(line)

   
    self.switched = []

   
    self.bind("<ButtonRelease-1>", lambda event: self.switched.clear())

    self.draw()



def draw(self):
    for row in self.grid:
        for cell in row:
            cell.draw()

def _eventCoords(self, event):
    row = int(event.y / self.cellSize)
    column = int(event.x / self.cellSize)
    return row, column

def handleMouseClick(self, event):
    row, column = self._eventCoords(event)
    cell = self.grid[row][column]
    cell._switch()
    cell.draw()
    self.switched.append(cell)

def handleMouseMotion(self, event):
    row, column = self._eventCoords(event)
    cell = self.grid[row][column]

    if cell not in self.switched:
        cell._switch()
        cell.draw()
        self.switched.append(cell)


if __name__ == "__main__" :
    app = Tk()

    grid = CellGrid(app, 5, 2, 100)
    grid.pack()

    app.mainloop()
        self.bind("<Button-1>", self.handleMouseClick)
        self.bind("<B1-Motion>", self.handleMouseMotion)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...