Jun-07-2019, 02:30 AM
I am having difficulty with my scroll bars sliding backward. Code below.
user_dict = {"J Schmo":["SSM", "CPP"], "B Kezzi":["SM", "OBSIC"], "J juk":["SSM", "CPP"]} system_type = {"Controller":["SSM", "CPP", "SM"], "CTD":["SSM", "SM"], "MMP":["SSM", "CPP"], "Acomm":["SSM"], "D2": ["OBSIC"]} user_variables = {"000System SN": ["CTD", "SSM", "SM", "OBSIC"], "001System IP": ["CTD", "MMP", "SSM", "SM", "OBSIC"], "002System Name": ["MMP", "SSM", "SM", "OBSIC"]} system_variables = {"000Initial Main V": ["CTD", "SSM", "SM", "OBSIC"],"001Initial Main I": ["CTD", "SSM", "SM", "OBSIC", "D2"]} user_buttons = {"LOGIN": ["SSM", "CPP", "SM"], "Get Address": ["SSM", "CPP"], "Connect": ["OBSIC"], "Begin Test": ["OBSIC"], "Get initial Q330 V&I": ["OBSIC", "D2"]} users = list(user_dict.keys()) # Grabs all users from user_dict and put them in a list called users User_Variable_Entry = {} User_Variable_Label = {} System_Variable_Entry = {} System_Variable_Label = {} def in_group(dictionary, group): temp = [] for key, groups in dictionary.items(): if group in groups: temp.append(key) return temp def system_type_menu(selection): global system system = selection systems = in_group(system_type, selection) Userlist = OptionMenu (frm, system_type_var, *systems, command = test_data) # Step Three Userlist.grid(row=2, column=0,pady=10) def group_menu(selection): groups = user_dict[selection] Userlist = OptionMenu (frm, group_var, *groups, command = system_type_menu) # Step Two Userlist.grid(row=1, column=0,padx=5) def test_data(selection): # Step Four UVP = 20 ##User Variable Position lb = list() for k, v in sorted(user_variables.items()): if system in v: name = (k) e = Entry(frm, width=25) e.grid(sticky=W,row=UVP, column=3) User_Variable_Entry[name] = e lb = Label(frm, width=25, text=name[3:]) lb.grid(row=UVP, column=15) User_Variable_Label[name] = lb UVP += 30 BPH = 420 BPV = 525 x=0 for k, v in sorted(user_buttons.items()): if system in v: BV = k if (x == 3): x=0 BPV += 30 BPH = 420 BV = Button(frm, width=20, bg = "green", fg = "white", text=BV) BV.grid(row=BPH, column=BPV) BPH += 200 x += 1 SVP = 50 ##System Variable Position lb = list() for k, v in sorted(system_variables.items()): if system in v: name = (k) e1 = Entry(frm, width=25) e1.grid(row=1275, column=SVP) System_Variable_Entry[name] = e1 lb1 = Label(frm, width=25, text=name[3:]) lb1.grid(row=1050, column=SVP) System_Variable_Label[name] = lb1 SVP += 30 def get_data(): for k in sorted(user_variables.keys()): print(k.get()) def print_user_variables(): for name in sorted(User_Variable_Entry): print ((name[3:]),User_Variable_Entry[name].get()) from tkinter import * ## Main window root = Tk() ## Grid sizing behavior in window root.grid_rowconfigure(0, weight=1) root.grid_columnconfigure(0, weight=1) ## Canvas cnv = Canvas(root) cnv.grid(row=0, column=0, sticky='nswe') ## Scrollbars for canvas hScroll = Scrollbar(root, orient=HORIZONTAL, command=cnv.xview) hScroll.grid(row=1, column=0, sticky='we') vScroll = Scrollbar(root, orient=VERTICAL, command=cnv.yview) vScroll.grid(row=0, column=1, sticky='ns') cnv.configure(xscrollcommand=hScroll.set, yscrollcommand=vScroll.set) ## Frame in canvas frm = Frame(cnv, bg='cyan') ## This puts the frame in the canvas's scrollable zone cnv.create_window(0, 0, window=frm, anchor='nw') ## Frame contents a = StringVar() title_label = Label(frm, text="My Software}",font=(None, 36),bg='cyan',fg = "blue") title_label.place(x=20, y=0) Run_now = Button(frm, text="Run", fg="blue", command=print_user_variables) Run_now.place(x=500, y=20) Exit_now = Button(frm, text="Quit", fg="blue", command=root.destroy) Exit_now.place(x=500, y=40) UV_Label = Label(frm, bg="cyan", fg="blue", text="USER VARIABLES",font=(None, 18)) UV_Label.place(x=10, y=60) SV_Label = Label(frm, width=25,bg='cyan',fg = "blue", text="SYSTEM VARIABLES",font=(None, 18)) SV_Label.place(x=10, y=80) user_var = StringVar() user_var.set ('Enter details') system_type_var = StringVar() system_type_var.set ('Select System Type') group_var = StringVar() group_var.set ('Select Group') var=StringVar() var.set ('Select User') Userlist = OptionMenu (frm, var, *users, command = group_menu) # Step One Changed *list to *users, added command = group_menu Userlist.grid(row=0, column=0) ## Update display to get correct dimensions frm.update_idletasks() ## Configure size of canvas's scrollable zone cnv.configure(scrollregion=(0, 0, frm.winfo_width(), frm.winfo_height())) root.mainloop()