From 3e747cc5c6b14acdaa2dd52599e8da68f897f1fc Mon Sep 17 00:00:00 2001 From: Martin Zietz Date: Fri, 22 Jan 2021 18:00:23 +0100 Subject: [PATCH] Status Panel Layout updates --- User_Interface.py | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/User_Interface.py b/User_Interface.py index e597394..d028c1d 100644 --- a/User_Interface.py +++ b/User_Interface.py @@ -26,12 +26,15 @@ class HelmholtzGUI(Tk): self.frames = {} # dictionary for storing all pages - for F in (TestFrame, StatusDisplay): + for F in [TestFrame]: frame = F(mainArea, self) self.frames[F] = frame frame.grid(row=0, column=0, sticky="nsew") - self.show_frame(StatusDisplay) + self.StatusDisplay = StatusDisplay(self, self) + self.StatusDisplay.pack(side="bottom", fill="x", expand=False) + + self.show_frame(TestFrame) def show_frame(self, key): frame = self.frames[key] # gets correct page from the dictionary @@ -70,38 +73,45 @@ class TestFrame(Frame): class StatusDisplay(Frame): def __init__(self, parent, controller): - Frame.__init__(self, parent) - print("StatusDisplay called") # ToDo: remove + Frame.__init__(self, parent, relief=SUNKEN, bd=1) + + self.grid_rowconfigure(ALL, weight=1) + self.grid_columnconfigure(ALL, weight=1) + rowCounter = 0 # keep track of which row we are at in the grid layout + x_pad = 10 # centrally set padding col = 0 - for header in ["X-Axis", "Y-Axis", "Z-Axis"]: # create Column headers - headLabel = Label(self, text=header, font=SUB_HEADER_FONT) - headLabel.grid(columnspan=2, row=rowCounter, column=col*2, sticky="ew") + for header in ["", "X-Axis", "Y-Axis", "Z-Axis"]: # create Column headers + headLabel = Label(self, text=header, font=SUB_HEADER_FONT, borderwidth=1, + relief="flat", anchor="w", padx=x_pad) + headLabel.grid(row=rowCounter, column=col, sticky="ew") col = col + 1 # move to next column rowCounter = rowCounter + 1 # increase row counter to place future stuff below header # define content of row entries - TextLabels = ["Serial Port:", "PSU Channel:", "Connection Status:", "Output:", "Remote Control:", - "Voltage Setpoint:", "Actual Voltage:", "Current Setpoint:", "Actual Current:", " ", + TextLabels = ["PSU Serial Port:", "PSU Channel:", "Connection Status:", "", "Output:", "Remote Control:", + "Voltage Setpoint:", "Actual Voltage:", "Current Setpoint:", "Actual Current:", "", "Target Field:", "Trgt. Field Raw:", "Target Current:", "Inverted:"] self.rowNo = len(TextLabels) # get number of label rows - self.columnNo = 6 # number of label columns + self.columnNo = 4 # number of label columns # prepare list of lists to contain all labels for row entries in all columns: self.Labels = [[] for _ in range(self.columnNo)] self.label_dict = {} for name in TextLabels: - self.label_dict[name] = [StringVar() for _ in range(int(self.columnNo/2))] - for col in range(int(self.columnNo/2)): - self.Labels[col*2].append(Label(self, text=name)) - self.Labels[col*2+1].append(Label(self, textvariable=self.label_dict[name][col])) + self.label_dict[name] = [StringVar() for _ in range(self.columnNo-1)] + # add labels for row titles + self.Labels[0].append(Label(self, text=name, borderwidth=1, relief="flat", anchor="w", padx=x_pad)) + for col in range(self.columnNo-1): # add labels vor values + self.Labels[col+1].append(Label(self, textvariable=self.label_dict[name][col], + borderwidth=1, relief="flat", anchor="w", padx=x_pad)) col = 0 for LabelCol in self.Labels: # place row entries in grid layout for all columns for row in range(self.rowNo): # place row entries - LabelCol[row].grid(row=row+rowCounter, column=col, sticky="w", padx=10) + LabelCol[row].grid(row=row+rowCounter, column=col, sticky="nsew") col = col + 1 rowCounter = rowCounter + self.rowNo # increase row counter to place future stuff below this @@ -112,7 +122,7 @@ class StatusDisplay(Frame): for axis in g.AXES: if axis.device is not None: axis.update_values() - self.label_dict["Serial Port:"][i].set(g.ports[i]) + self.label_dict["PSU Serial Port:"][i].set(g.ports[i]) self.label_dict["PSU Channel:"][i].set(axis.channel) self.label_dict["Connection Status:"][i].set(axis.connected) self.label_dict["Output:"][i].set(axis.output_active) @@ -129,6 +139,7 @@ class StatusDisplay(Frame): controller.after(2000, lambda: self.update_labels(controller)) +# ToDo: remove def print_stuff(stuff): print(stuff)