示例#1
0
class View:
    def __init__(self, root, model, controller):
        self.model = model
        self.root = root
        self.controller = controller
        self.popup = Popup(model)

        # Table setup
        self.frame_table = tk.Frame(root)
        self.table = TableCanvas(self.frame_table)
        self.table.show()

        self.frame_table.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

        # Buttons setup
        self.frame_buttons = tk.Frame(root)
        # Event handlers
        self.btn_open = tk.Button(self.frame_buttons, text="Open", command=self.controller.openFile)
        self.btn_search = tk.Button(self.frame_buttons, text="Search", command=self.controller.findValue)
        self.btn_statistics = tk.Button(self.frame_buttons, text="Statistics", command=self.controller.getMinMax)
        self.btn_plot = tk.Button(self.frame_buttons, text="Show plot", command=self.controller.openPlot)

        # Grid setup
        self.btn_open.grid(row=0, column=0, sticky="ew", padx=5, pady=5)
        self.btn_search.grid(row=1, column=0, sticky="ew", padx=5, pady=5)
        self.btn_statistics.grid(row=2, column=0, sticky="ew", padx=5, pady=5)
        self.btn_plot.grid(row=3, column=0, sticky="ew", padx=5, pady=5)

        self.frame_buttons.pack(side=tk.LEFT, fill=tk.BOTH)

        #Window setup
        self.root.rowconfigure(0, minsize=800, weight=1)
        self.root.columnconfigure(1, minsize=800, weight=1)
        self.root.title("Log viewer")

    #Methods
    def showData(self):
        """Show data in te table"""
        self.table = TableCanvas(self.frame_table, data=self.model.dictdata, read_only=True)
        self.table.adjustColumnWidths()
        self.table.show()

    def setTitle(self):
        """Set root title with filepath"""
        self.root.title(f"Log Viewer - {self.controller.filepath}")

    def showSearchResult(self, row, col):
        """Show cell with search result in the table"""
        self.table.delete('searchrect')
        self.table.drawRect(row, col, color='red', tag='searchrect', delete=0)
        self.table.lift('searchrect')
        self.table.lift('celltext'+str(col)+'_'+str(row))