# With this program, I can read the information from # Specifications.txt file and display it on a form. # The user can then update/modify the fields. This is # all working fine and beeautifully... # # I now need to reverse the process and replace the # adjusted lines of data back into the Specifications.txt # file. Fortunately, that code has already been # written .
# What I cannot seem to do is to pull the adjusted # information from the form into variables, or a # list/array, so that can be used for the update to the file. # Suggestions for what to look up to study this # through will help. # # Thank you # Steve # --------------------------------------------------------------- import tkinter as tk from tkinter import ttk import sys ThisList = ["start"] #=============================================================== def FillTheList(): x=0 ThisList = [] with open("Specifications.txt", 'r') as infile: for lineEQN in infile: # loop to find each line in the file for that dose if lineEQN[0:1] == "-": # Lines with "-" in space 1 have special recognition for this form ListItem = lineEQN[1:6].strip() # Remove any spaces before and after ThisList.append(ListItem) #Add the ListItem to ThisList return(ThisList) #==================================================================== def EditDataByForm(): window = tk.Tk() window.title("Python Tkinter Text Box") window.minsize(700,700) #height, width #=============================================================== def GetLineByItem(DataType): #get line by item in column 3 - 5 #print("DataType = " + DataType) DataLetter = DataType[0:1] #Capture item letter ID for file check if DataLetter.isupper(): # == "Specs": FileToBeEdited = "Specifications.txt" else: FileToBeEdited = "DataSpecifications.txt" with open(FileToBeEdited, 'r') as infile: for lineEQN in infile: # loop to find each line in the file for that dose if ((lineEQN[1:2]== DataLetter)): A = lineEQN[1:46] # Whole Line a = lineEQN[34:46].strip() # Just the Data # print("A = " + A ) # print("a = " + a) return(A, a) #Return the line and Data separately #=============================================================== def ClickSubmit(): window.destroy() #=============================================================== label = ttk.Label(window, text = "Enter the new readings") label.grid(column = 1, row = 1) ThisList = FillTheList() x = 3 # Allows for two rows at the top of the form used for headers y = 0 # Scans the datafile to fill the list New_Specs = [] #SpecsToUpdate = [] for lineItem in range(len(ThisList)): SpecLine, Spec = GetLineByItem(ThisList[y]) OldSpec = Spec NewSpec = " " SVRlabel = ttk.Label(window, text = SpecLine + " "*5) SVRlabel.grid(column = 1, row = x, sticky=tk.W) NewSpec = tk.StringVar() New_Specs.append(NewSpec) SVRCodeEntered = ttk.Entry(window, width = 15, textvariable = NewSpec) SVRCodeEntered.grid(column = 2, row = x, pady = 15, sticky=tk.W) SVRCodeEntered.insert(0, OldSpec) x += 1 y += 1 #=============================================================== button = ttk.Button(window, text = "Submit", command = ClickSubmit) button.grid(column= 2, row = 15) window.mainloop() #=============================================================== EditDataByForm() print ("Done") # Code needed to pull the updated fields from the form # as variables or in a list/array. Once I have that, the code to replace # code in the specifications.txt file has already been written. # Here is a sample of the Specifications.txt file: ---------------------------------------------------------------------------- --------------------------------------- -E MSN Monitor Serial Number JNGY263-T4464 ## - -F TSL TestStrip Lot Number 45001 82990 ## -G SED Strip Expire Date 2021-05-31 ## - -H SSC Sensor Sequence Code 71 ## -I SCN Sensor Code Number G03 ## -J SSN Sensor Serial Number 2021-01-31 ## -K SDE Sensor Date to Expire 2021-01-31 ## -L SDN Sensor Day Number 12 ## -M FDS First Date for Sensor Fri Aug 17, 2020 09:34 ## - -N IDT Insulin Dose Total 450 ## ---------------------------------------------------------------------------- ---------------------------- Footnote: Some mornings it just isn't worth chewing through the leather straps. -- https://mail.python.org/mailman/listinfo/python-list